1. @Value
2. @ConfigurationProperties
3. 使用Environment获取
基本原理:通过注入Environment对象
实现目标:在一般情况,用@value就够,但有些时候static的方法也希望在配置文件的参数。
实现思路:PropertiesUtils内放入一个static的Environment,PropertiesUtils .getProperty("xxxxx")
就可以获取想要的属性
3.1 定义 SpringContext
@Component
@Order(1)
public class SpringContext implements ApplicationContextAware {
private static ApplicationContext context;
public SpringContext() {
log.info("init SpringContext");
}
@Override
public void setApplicationContext(ApplicationContext ctx) throws BeansException {
context = ctx;
}
public static <T> T getBean(String name, Class<T> clazz) {
log.info("use SpringContext get bean name={}", name);
return context.getBean(name, clazz);
}
}
3.2 PropertiesUtils内通过env获取properites
@Slf4j
public class PropertiesUtils {
private static Environment env = SpringContext.getBean("environment", Environment.class);
private PropertiesUtils() {
log.info("PropertiesUtils init");
}
public static String getProperty(String properties) {
return env.getProperty(properties);
}
}
4. 监听器的方式
5. 建议
一般建议尽量用依赖注入的方式,static不能滥用。