Java 如果@Profiles未激活,则配置Springbean

Java 如果@Profiles未激活,则配置Springbean,java,spring,configuration,Java,Spring,Configuration,注释的文档不太清楚多个活动配置文件名称是“和”还是“或”在一起 如果“测试”或“集成测试”配置文件都不处于活动状态,我希望配置一个bean。我尝试了以下方法,但不起作用(似乎不符合条件) 我能想到的唯一解决办法是删除此注释,而是将@Autowired和环境添加到bean本身中,并测试环境。getActiveProfiles() 有没有办法做到这一点和条件?如果没有,注释是否可以扩展以实现此目的?取决于您使用的是哪个Spring版本。Spring 4.0.8-RELEASESpring 4+具有条

注释的文档不太清楚多个活动配置文件名称是“和”还是“或”在一起

如果“测试”或“集成测试”配置文件都不处于活动状态,我希望配置一个bean。我尝试了以下方法,但不起作用(似乎不符合条件)

我能想到的唯一解决办法是删除此注释,而是将
@Autowired
和环境添加到bean本身中,并测试
环境。getActiveProfiles()


有没有办法做到这一点和条件?如果没有,注释是否可以扩展以实现此目的?

取决于您使用的是哪个Spring版本。Spring 4.0.8-RELEASESpring 4+具有条件bean(Profile就是这些条件之一)。你可以为任何你想要的东西实施你自己的规则。但是,如果只在测试中包含此配置而不是总是…谢谢,这不是更容易吗。我可以通过实现
org.springframework.context.annotation.condition
来创建自己的条件,并使用它来检查环境中的活动概要文件,以便在测试期间不配置bean。我曾希望有一种更简单的方法直接使用@Profile
@Bean
@Profile({"!test", "!integration-test"})
SomeLogicNotForTests someLogicNotForTests() {
  return new SomeLogicNotForTests();
}