Невозможно подключиться с помощью аннотации ActiveProfile

Впервые пользуюсь профилями и нуждаюсь в помощи. У меня есть абстрактный базовый класс (DecisionManagementRuleExecutor), который получает свою зависимость (RuleHandler) с помощью аннотации.

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

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

   @Autowired
   RuleHandler ruleHandler;

Когда я работаю с профилем 'itest', я хочу, чтобы 'ITestRuleHandler' был дочерним по отношению к RuleHandler. Где "ItestRuleHandler"

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

Я вижу, что в логах активный профиль "самый"

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

Я наклеиваю бревно для проводки

Обработка внедренного элемента bean-компонента vendorServiceRuleExecutor: AutowiredFieldElement для capdRuleHandler capdsDecisionManagementRuleExecutor.ruleHandler Возвращение кэшированного экземпляра одноэлементного компонента 'ITestRuleHandler' Создание общего экземпляра правила одноэлементного бина 'ruleHandly' Создание экземпляра bean-компонента EH потенциальные циклические ссылки Завершено создание экземпляра bean-компонента "ruleHandler". Автоматическая разводка по типу от имени компонента "vendorServiceRuleExecutor" к компоненту с именем "ruleHandler" Завершено создание экземпляра компонента "vendorServiceRuleExecutor"

Изменить: изменил RuleHandler как интерфейс, и теперь я получаю эту ошибку:

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

1 ответ

Решение

Чтобы сделать реализацию ITestRuleHandler доступны для itest профиль, вы должны объявить свой класс как:

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

@ActiveProfiles активирует один или несколько профилей, не выставляя компонент для профиля. Это должно применяться к одному из тестовых (или потребляющих) классов, чтобы активировать профиль для тестирования (или потребления).

Другие вопросы по тегам