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> 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不能滥用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容