Использование @ConditionalOnBean для предоставления запасного варианта в случае, если метод фабрики бина выдает ошибку - PullRequest
0 голосов
/ 29 января 2020

У меня есть пружинный конфигуратор, подобный этому:

@Bean
public A a() {
  // ...
  if (...) throw new IllegalStateException();
  // ...
}

@Bean 
@ConditionalOnBean(A.class)
public B b1(A a) {
   // ...
}

@Bean
@ConditionalOnMissingBean(A.class)
public B b2() {
    // ...
}

Мне бы хотелось, чтобы, если a() выбрасывает исключение, вместо того, чтобы печатать исключение и жаловаться, что оно не может создать экземпляр A, я бы хотел использовать b2 вместо b1 (и печатать трассировку стека информативным способом). Я пытался добавить @ConditionalOnBean, но это не помогло.

Я не могу действительно объединить a() и b1 и b2 в одном методе, так как мне нужны и A, и B в разных местах моего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...