我有以下代码javax.inject.Qualifier春季JavaConfig
的2场javax.Inject
预选赛
@Qualifier
@Target(value={ElementType.FIELD,ElementType.TYPE,ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface Hibernate {
--nothing goes here
}
@Qualifier
@Target(value={ElementType.FIELD,ElementType.TYPE,ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface Toplink{
--nothing goes here
}
我有资格的库
@Named
@Hibernate
public class HibernateRepository implements IRepository{
-- some code
}
@Named
@Toplink
public class ToplinkRepository implements IRepository{
-- some code
}
这些存储库是注入使用使用javax.Inject
public class InvoiceService {
@Inject
//@Hibernate I alternate between the two to test
@Toplink
private IRepository iRepository;
public void saveInvoice(Invoice invoice){
iRepository.save(invoice);
}
以下配置类
@Configuration
public class Myconfig {
@Bean
public IRepository getHibernateRepository(){
return new HibernateRepository();
}
@Bean
public InvoiceService getInvoiceService(){
return new InvoiceService();
}
@Bean
public IRepository getToplinkRepository(){
return new ToplinkRepository();
}
}
此代码工作完全正常,当我使用XML配置,任何想法如何得到它与javaConfig工作?或者在我的代码中有什么根本错误?使用时它抛出以下异常
异常线程“main” org.springframework.beans.factory.BeanCreationException:错误 创建名为“getInvoiceService”豆:自动装配 依赖注入失败;嵌套的异常是 org.springframework.beans.factory.BeanCreationException:不能 autowire字段:private com.domain.IRepository com.service.InvoiceService.iRepository;嵌套的异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:无类型[com.domain.IRepository]的 匹配豆找到依赖性: 预期至少1豆,其有资格作为自动装配候选 这种依赖性。依赖注解:{@ javax.inject.Inject(), @ com.domain.Toplink()}
感谢期待。
你确定Spring(3.1)支持'@ Bean'方法中的_javax.inject.Qualifier_吗?我目前正在努力解决同样的问题,因为我想以编程方式实例化通用存储库,并且在@ @ Configuration'中使用“@Bean @ MyQualifier”创建bean时,“@Inject @ MyQualifier”不起作用类。 – Robin 2013-02-04 16:23:59