可以通过如下集中方式获取Spring Boot项目的运行环境。
- 注解直接获取
- 注入 ApplicationContext 实例获取
- 实现 ApplicationContextAware 接口获取
注解直接获取
1 2
| @Value("${spring.profiles.active}") private String env;
|
注入 ApplicationContext 实例获取
1 2 3 4 5 6 7 8 9 10
| @Configuration public class ApplicationConfig { @Autowired private ApplicationContext context; public String getActiveProfile() { return context.getEnvironment().getActiveProfiles()[0]; } }
|
实现 ApplicationContextAware 接口获取
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| @Component public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { SpringContextUtil.applicationContext = applicationContext; }
public static Object getBean(String name) { return applicationContext.getBean(name); }
public static <T> T getBean(Class<T> requiredType) { return applicationContext.getBean(requiredType); }
public static String getActiveProfile() { return applicationContext.getEnvironment().getActiveProfiles()[0]; }
}
|