前言
应用配置的读取需要使用ApplicationContext类,如果是在Application中使用,可以直接创建出来该对象。但是我们实际使用时,不可能每次使用的时候都创建一份。
获取ApplicationContext
创建ApplicationContextUtil
首先,我们创建一个ApplicationContextUtil类,如下:
package com.chenchen.util;
import org.springframework.context.ApplicationContext;
public class ApplicationContextUtil {
private static ApplicationContext applicationContext;
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static void setApplicationContext(ApplicationContext applicationContext) {
ApplicationContextUtil.applicationContext = applicationContext;
}
}
创建Listener
package com.chenchen.util;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
public class StartListener implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
ApplicationContextUtil.setApplicationContext(event.getApplicationContext());
}
}
设置监听
SpringApplication springApplication = new SpringApplication(WebApplication.class);
springApplication.addListeners(new StartListener());
springApplication.run(args);
启动项目,这样我们就可以在需要的地方获取到ApplicationContext对象了。
然后,可以通过getEnvironment获取到环境变量,就可以读取到相应配置了。
创建JAVA类持有一组配置
package com.chenchen.util;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(value = "spring.profiles")
public class Env {
private String active;
public String getActive() {
return active;
}
public void setActive(String active) {
this.active = active;
}
}
使用
logger.info("当期Redis:" + ApplicationContextUtil.getApplicationContext().getEnvironment().getProperty("spring.redis.host"));
String[] activeProfiles = ApplicationContextUtil.getActiveProfiles();
logger.info("当期运行环境:" + (activeProfiles.length > 0 ? activeProfiles[0] : "无法获取"));
Env env = ApplicationContextUtil.getApplicationContext().getBean(Env.class);
logger.info("当期运行环境:" + env.getActive());
博客介绍了在Spring Boot中获取应用配置的方法。因实际使用中不能每次都创建ApplicationContext对象,所以先创建ApplicationContextUtil类、Listener并设置监听,启动项目后可在需要处获取该对象,还能通过getEnvironment读取配置,此外还提到创建JAVA类持有配置。
17万+

被折叠的 条评论
为什么被折叠?



