Прямой доступ к методу @Bean из конфигурации - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть класс конфигурации, в котором определены некоторые bean-компоненты.Могу ли я получить доступ к методу bean из сервиса напрямую, как показано ниже?

@Configuration
public class MyConfig{
   @Bean
   public Sample sample(int x){
       return new Sample(x);
   }
}

@Service
public class MyService{
     @Autowired
     MyConfig config;

     public void test(){
         Sample sample = config.sample(2);
     }
}

1 Ответ

0 голосов
/ 13 сентября 2018

Этого можно достичь с помощью интерфейса BeanFactory (ApplicationContext реализует его) и прототипа требуемого компонента.

В классе MyConfig область действия bean-компонента должна быть установлена ​​в «prototype»:

// import org.springframework.context.annotation.Scope;

@Bean
@Scope("prototype")
public Sample sample(int x) {
  return new Sample(x);
}

Затем вместо автопроводки config в MyService должен быть подключен экземпляр BeanFactory:

@Autowired
private BeanFactory beanFactory;

Чтобы получить экземпляр компонента Sample, его следует вызывать следующим образом:

Sample sample = beanFactory.getBean(Sample.class, 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...