我有以下代码
2javax.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
}
I 限定存储库
@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 一起工作吗?或者我的代码中有什么根本错误?使用时会引发以下异常
线程“主”org.springframework.beans.factory.BeanCreationException 中的异常:创建名为“getInvoiceService”的 bean 时出错:注入自动装配的依赖项失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法自动装配字段:私有 com.domain.IRepository com.service.InvoiceService.iRepository;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到类型为 [com.domain.IRepository] 的匹配 bean:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注解:{@javax.inject.Inject(), @com.domain.Toplink()}
感谢期待。