Могу ли я создать компонент с расширенной областью прототипа с помощью Spring Javaconfig?

#java #spring

#java #spring

Вопрос:

В старых документах для Spring Javaconfig говорится, что я могу использовать

 @Bean(scope=DefaultScopes.PROTOTYPE)
  

чтобы получить компонент-прототип, но Spring 3.0.5, @Bean похоже, не обладает этим свойством.

Есть ли какой-либо способ управлять областью действия компонента в Javaconfig?

Ответ №1:

Используйте @Scope вместо.

Также, DefaultScopes недоступен в Spring core, но вы можете использовать BeanDefinition.SCOPE_PROTOTYPE и BeanDefinition.SCOPE_SINGLETON для удобства.

Комментарии:

1. Спасибо, это оказалось на удивление сложно найти в Google!

2. Теперь ConfigurableBeanFactory.SCOPE_PROTOTYPE

Ответ №2:

Вы можете добавить @Scope("prototype") , например:

 @Bean
@Scope("prototype")
public DemoDao getDao() {
    DemoDao dao = new DemoDao();
    dao.setAddress("annoted:address");
    dao.setName("annoted:name");
    return dao;
}
  

Комментарии:

1. Вы должны объяснить, почему OP должен это делать. Также, если вы прокомментируете больше кода, почему бы не включить его в ответ, чтобы люди сразу увидели его? 🙂

2. Нравится то, что я только что сделал 😉

Ответ №3:

Используйте следующее для конфигурации Java,

 @Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public SpringBean springBean(){
    SpringBean bean = new SpringBean();
    return bean;
}
  

Или просто,

 @Scope(value = "prototype")
  

Обратитесь к аннотации @Scope