0

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

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

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

   @Autowired
   RuleHandler ruleHandler;

当我使用“itest”配置文件运行时,我希望连接“RuleHandler”的子“ITestRuleHandler”。“ItestRuleHandler”在哪里

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

我在日志中看到活动配置文件是“itest”

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

我正在粘贴接线日志

处理 bean 'vendorServiceRuleExecutor' 的注入元素: AutowiredFieldElement for capdRuleHandler capdsDecisionManagementRuleExecutor.ruleHandler 返回单例 bean 'ITestRuleHandler' 的缓存实例 创建单例 bean 'ruleHandler' 的共享实例 创建 bean 'ruleHandler' 的实例 急切地缓存 bean 'ruleHandler' 以允许解析潜在的循环引用 完成创建 bean 'ruleHandler' 的实例 从 bean 名称 'vendorServiceRuleExecutor' 到 bean 的类型自动装配 'ruleHandler' 完成创建 bean 'vendorServiceRuleExecutor' 的实例

编辑:将“RuleHandler”更改为接口,现在我收到此错误:

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

1 回答 1

0

要使配置文件的实现ITestRuleHandler可用itest,您需要将您的类声明为:

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

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

于 2015-02-27T15:47:05.113 回答