Tag: spring ioc

尽管使用了@Primary,但两个具有相同名称的bean会导致ConflictingBeanDefinitionException

我有一个应用程序初始化程序类,用于将特定于应用程序的数据插入数据库。 @Component(“applicationInitializer”) public class ApplicationInitializer { @PostConstruct public void init(){ // some clever code here } } 还有DevApplicationInitializer类,用于在开发人员计算机上使用一些示例数据初始化数据库(在部署生产代码时排除此类)。 @Component(“applicationInitializer”) @Primary public class DevApplicationInitializer extends ApplicationInitializer { @PostConstruct @Override public void init(){ super.init(); // even more clever code here } } 直到我给bean命名(只有@Component注释) – 一切正常 – 当DevApplicationInitializer可用时,它被实例化而不是ApplicationInitializer 。 当我给他们一个applicationInitializer名称时,抛出了exception: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name ‘applicationInitializer’ for bean class […]

如何在Spring中注入List实例?

什么有效 假设我有一个ArrayList的spring bean定义: de en 现在我可以将它注入各种bean中,例如: @Controller class Controller { @Autowired public Controller(ArrayList availableLanguages) { // … } } 这很好用。 怎么打破 但是,如果我稍微更改我的控制器并使用类型List而不是ArrayList如下所示: @Controller class Controller { @Autowired public Controller(List availableLanguages) { // … } } 然后我得到一个String类型的所有bean的列表,而不是我定义的bean。 但是我实际上想将List包装到一个不可修改的List中,但只有将我的依赖项降级到列表才能实现。 到目前为止发现了变通方法 以下XML文件: de en 与此控制器一起使用: @Controller class Controller { @Autowired public Controller(Object availableLanguages) { List theList = (List)availableLanguages; […]

接口在Spring IoC / DI中使用@Component注释进行注释。 可能是什么原因?

有时,接口使用@Component注释进行注释。 然后我明显的推理是,实现这种接口的类也将被视为组件。 但如果我是对的,事实并非如此。 那么接口上@Component注释的目的是什么呢?

春季默认范围是单身吗?

你能否解释为什么Spring为下面显示的bean配置创建了两个对象,因为默认情况下spring默认范围是singleton? Spring配置在这里: