如何在Spring中以编程方式获取当前的活动/默认环境configuration文件?
我需要根据不同的当前环境configuration文件编写不同的逻辑。 你怎么能从Spring获得当前的活动和默认configuration文件?
您可以自动连接环境
@Autowired Environment env;  环境提供String[] getActiveProfiles() , String[] getDefaultProfiles()和boolean acceptsProfiles(String... profiles) 
 如果你不使用自动assembly,只需实现EnvironmentAware 
这是一个更完整的例子。
Autowire环境
首先你需要自动装载环境bean。
 @Autowired private Environment environment; 
检查活动configuration文件是否存在configuration文件
 然后,您可以使用getActiveProfiles()来查找configuration文件是否存在于活动configuration文件列表中。 这是一个从getActiveProfiles()获取String[]的示例,从该数组获取stream,然后使用匹配器检查多个configuration文件(不区分大小写),如果它们存在,则返回布尔值。 
 //Check if Active profiles contains "local" or "test" if(Arrays.stream(environment.getActiveProfiles()).anyMatch( env -> (env.equalsIgnoreCase("test") || env.equalsIgnoreCase("local")) )) { doSomethingForLocalOrTest(); } //Check if Active profiles contains "prod" else if(Arrays.stream(environment.getActiveProfiles()).anyMatch( env -> (env.equalsIgnoreCase("prod")) )) { doSomethingForProd(); } 
 你也可以使用注解@Profile("local")实现类似的function。下面是关于这种技术的更多信息: Spring Profiles 
 @Value("${spring.profiles.active}") private String activeProfile; 
它的工作原理,你不需要实现EnvironmentAware。 但是我不知道这个方法的缺点。