Могу ли я создать прототип scoped bean с помощью Spring Javaconfig?

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

@Bean(scope=DefaultScopes.PROTOTYPE)

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

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

Ответ 1

Вместо этого используйте @Scope.

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

Ответ 2

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

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

Ответ 3

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

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

Или просто,

@Scope(value = "prototype")

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