基于 spring 的框架中,经常会需要通过代码层面判断当前所处的环境信息(如 spring.profiles.active
等)来区分某种业务的不同处理方式,比如根据环境的不同,采用不同的资源加载等。
推荐方式
spring 非常贴心地在容器内实例化了一个带有环境信息的 Environment
实现类,开发者可以通过注入 bean 形式使用它,具体如下:
@Autowired
Environment env;
Environment 的全路径为 org.springframework.core.env.Environment
,主要提供如下三个方法:
String[] getActiveProfiles()
String[] getDefaultProfiles()
boolean acceptsProfiles(Profiles profiles)
@Value 方式
也可以直接通过 @Value
注解获取配置的 spring.profiles.active
值,需要注意的是要考虑没有设置 spring.profiles.active
情况,给它一个默认值,否则在没有设置的情况下,会报 IllegalArgumentException
错误。
@Value("${spring.profiles.active:Unknown}")
private String activeProfile;