无法使用ActiveProfile注释进行连线

时间:2015-02-27 14:38:05

标签: spring spring-annotations spring-profiles

首次使用个人资料并需要帮助。 我有一个抽象基类(DecisionManagementRuleExecutor),它通过注释连接它的依赖项(RuleHandler)。

    @Component
    public class RuleHandler {......

   public abstract class DecisionManagementRuleExecutor<M extends PersistentEntity,T extends Response> implements RuleExecutor<M,T>{

   @Autowired
   RuleHandler ruleHandler;

当我使用&#39; itest&#39;个人资料,我想要&#39; ITestRuleHandler&#39; RuleHandler&#39;的孩子有线。 在哪里&#39; ItestRuleHandler&#39;是

    @Component
    @ActiveProfiles(value = "itest")
    public class ITestRuleHandler extends RuleHandler {

我在日志中看到活动个人资料是&#39; itest&#39;

    System.getProperty("spring.profiles.active")

我正在粘贴日志以进行接线

  

处理bean的注入元素&#39; vendorServiceRuleExecutor&#39;:autowiredFieldElement for c.a.p.d.RuleHandler c.a.p.d.s.DecisionManagementRuleExecutor.ruleHandler          返回单例bean的缓存实例&#39; ITestRuleHandler&#39;          创建单例bean的共享实例&#39; ruleHandler&#39;          创建bean的实例&#39; ruleHandler&#39;          热切地缓存bean&rule;规则处理程序&#39;允许解决潜在的循环引用          完成创建bean的实例&rule;规则处理程序&#39;          按bean名称&#39; vendorServiceRuleExecutor&#39;按类型自动装配以bean命名的&#39; ruleHandler&#39;          完成创建bean的实例&vendorServiceRuleExecutor&#39;

编辑: 更改了&#39; RuleHandler&#39;作为一个界面,现在我收到这个错误:

  No qualifying bean of type [c.a.p.d.RuleHandler] is defined: expected single matching bean but found 2: ITestRuleHandler,iTestRuleHandler

1 个答案:

答案 0 :(得分:0)

要使ITestRuleHandler个人资料的实施itest可用,您需要将您的课程声明为:

@Component
@Profile("itest")
public class ITestRuleHandler extends RuleHandler

@ActiveProfiles激活一个或多个配置文件,而不是公开配置文件的组件。这应该应用于其中一个测试(或消费)类,以激活用于测试(或消费)的配置文件。