我有以下代碼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