#java #spring
#java #spring
Вопрос:
В старых документах для Spring Javaconfig говорится, что я могу использовать
@Bean(scope=DefaultScopes.PROTOTYPE)
чтобы получить компонент-прототип, но Spring 3.0.5, @Bean
похоже, не обладает этим свойством.
Есть ли какой-либо способ управлять областью действия компонента в Javaconfig?
Ответ №1:
Также, 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