SpringBoot获取当前运行环境

可以通过如下集中方式获取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);
}

/**
* 获取当前运行环境,即spring.profiles.active的值
*/
public static String getActiveProfile() {
return applicationContext.getEnvironment().getActiveProfiles()[0];
}


}
------ 本文完 ------