SpringBoot读取properties

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 getBean(String name, Class 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不能滥用。

你可能感兴趣的:(SpringBoot读取properties)