在 Spring 4 中扫描 @Configuration bean
Scanning @Configuration beans in Spring 4
嗨
我正在将我的网络应用程序从 Spring 3.1 升级到 4.1.8,但遇到了问题。我的代码没有改变(只有我的 pom.xml)
我的主要上下文中有一个配置 bean,如下所示:
@Configuration
public class StorableServiceConfiguration {
...
@Bean
public StorableService<Template, Long> templateService(ITemplateJpaDao dao) {
return new DaoService<Template, Long>(Template.class, dao);
}
}
显然在我的网络应用程序的其他地方,我有这样的声明:
@Autowired
@Qualifier("templateService")
private StorableService<Template, String> templateService;
现在这一切在 Spring 3.1.1 上运行良好,但在将版本更新到 4.1.8 后,我收到此错误:
Caused by:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No
qualifying bean of type [w.wexpense.service.StorableService] found for
dependency: expected at least 1 bean which qualifies as autowire
candidate for this dependency. Dependency annotations:
{@org.springframework.beans.factory.annotation.Autowired(required=true),
@org.springframework.beans.factory.annotation.Qualifier(value=templateService)}
有人知道吗?
我在某处读到 Spring 4 中关于 context:component-扫描关于 @Configuration 注释的行为方式的更改,但不记得是什么。有人知道吗?
谢谢
Spring 4 autowire bean 使用 Java 泛型作为 @Qualifier
.
的形式
所以你有一个 Bean @Autowired
和 StorableService<Template, String>
但是在你的 @Configuration
class 你的 @Bean
声明 StorableService<Template, Long>
.
如果您想要一个 StorableService<Template, String>
实例,您应该在 @Configuration
class 处创建另一个 @Bean
,例如:
@Bean
public StorableService<Template, String> templateService(ITemplateJpaDao dao) {
return new DaoService<Template, String>(Template.class, dao);
}
和 自动装配 它没有 @Qualifier
注释:
@Autowired
private StorableService<Template, String> templateService;
Spring 4 将完美注入。查看此博客 post 了解 Spring 4.
的这一新功能
嗨
我正在将我的网络应用程序从 Spring 3.1 升级到 4.1.8,但遇到了问题。我的代码没有改变(只有我的 pom.xml)
我的主要上下文中有一个配置 bean,如下所示:
@Configuration
public class StorableServiceConfiguration {
...
@Bean
public StorableService<Template, Long> templateService(ITemplateJpaDao dao) {
return new DaoService<Template, Long>(Template.class, dao);
}
}
显然在我的网络应用程序的其他地方,我有这样的声明:
@Autowired
@Qualifier("templateService")
private StorableService<Template, String> templateService;
现在这一切在 Spring 3.1.1 上运行良好,但在将版本更新到 4.1.8 后,我收到此错误:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [w.wexpense.service.StorableService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=templateService)}
有人知道吗?
我在某处读到 Spring 4 中关于 context:component-扫描关于 @Configuration 注释的行为方式的更改,但不记得是什么。有人知道吗?
谢谢
Spring 4 autowire bean 使用 Java 泛型作为 @Qualifier
.
所以你有一个 Bean @Autowired
和 StorableService<Template, String>
但是在你的 @Configuration
class 你的 @Bean
声明 StorableService<Template, Long>
.
如果您想要一个 StorableService<Template, String>
实例,您应该在 @Configuration
class 处创建另一个 @Bean
,例如:
@Bean
public StorableService<Template, String> templateService(ITemplateJpaDao dao) {
return new DaoService<Template, String>(Template.class, dao);
}
和 自动装配 它没有 @Qualifier
注释:
@Autowired
private StorableService<Template, String> templateService;
Spring 4 将完美注入。查看此博客 post 了解 Spring 4.
的这一新功能