如何从多个配置文件的自动装配候选中排除spring bean?

时间:2016-08-10 17:23:59

标签: java spring

如果当前配置文件不是数组之一,我想从自动装配候选中排除bean,如下所示:

@Component
@ActiveProfiles(value = {"!profile_1", "!profile_2"})
public class MyComponentImpl implements MyComponent

@Component
public class MyComponentDummy implements MyComponent

但是当我试图通过@ActiveProfiles注释时,bean似乎没有被排除在外,而且我正在获得expected single matching bean but found 2

我错过了某些东西,或者这种方式是不可能的,必须用

之类的东西来完成
@ActiveProfiles(value = {"profile_3", "!profile_4", ... }) 

我的春季版本是4.2.2

1 个答案:

答案 0 :(得分:1)

这可能类似于此处的查询How to conditionally declare Bean when multiple profiles are not active?

另一方面,我建议做正面选择而不是消极否定。 “默认”配置文件在这里可能会有所帮助。 假设您有多个配置文件 - Profile1 .. Profile5

如果它的Profile1或Profile2

,你不想创建bean的实例

所以你可以用它来注释它     @ActiveProfiles(值= { “Profile3的”, “Profile4”, “规范5”, “默认”)