Spring支持读取启动参数覆盖配置文件中的参数。所以普通JAVA类中若想读取Spring的配置参数,可以使用下面的方式。
1. Spring支持的读取方式
在SpringBoot2.x基础篇—常用注解(@Value&@ConfigurationProperties)中。可以使用如下的配置读取yml的配置:
@RestController
public class UserController {
private static Logger logger = LoggerFactory.getLogger(UserController.class);
@Value("${java.scheduled.validateTime}")
private volatile String time;
}
依赖BeanFactory
可以动态的读取@Value注解的值。
2.JAVA类动态读取@Value的值
@Slf4j
@Service
public class SpringBeanFactoryUtil implements BeanFactoryAware {
private static BeanFactory beanFactory;
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}
/**
* 动态解析yml的值。
* @param value ${}格式
* @return 若是解析失败或者未查找到,均返回null
*/
public static String resolve(String value) {
try {
if (beanFactory != null && beanFactory instanceof ConfigurableBeanFactory) {
return ((ConfigurableBeanFactory) beanFactory).resolveEmbeddedValue(value);
}
}catch (Exception e){
log.error("",e);
}
return null;
}
}
使用方式:
在普通JAVA类中,直接使用下面的代码就可以动态的读取Spring配置文件的值。
SpringBeanFactoryUtil.resolve("${spring.cloud.config.profile}");
网友评论