2017-09-08 68 views
0

我想自動連線我的構造函數的var args aruments的bean。Var args Autowire

我可以這樣做,如果是的話我該怎麼做?

這是我想要的代碼:

Public class ServiceImpl implements Service{ 
    private Set<Rules> rules = new HashSet<Rules>(); 

    public ServiceImpl(Rules... args) { 
     for (Rules r : args) { 
      rules.add(r); 
     } 
    } 
    //... 
} 

我想在spring-config.xml注入象下面這樣:

<bean id = "check" class="ServiceImpl"> 
    <constructor-arg ref="notEmpty"></constructor-arg> 
    <constructor-arg ref="check"></constructor-arg> 
</bean> 

有沒有一種方法,我可以用註釋實現這一點,並且在這裏不通過constructor args

回答

0

是的,註釋可以添加@Autowired來構造和IoC容器將在所有在上下文中註冊的規則實例線:

@Component 
public class ServiceImpl implements Service{ 
private Set<Rules> rules = new HashSet<Rules>(); 

@Autowired 
public ServiceImpl(Rules... args) { 
    for (Rules r : args) { 
     rules.add(r); 
    } 
    } 

} 
+0

我越來越沒有合格豆例外,在這裏是我的彈簧-config.xml中 \t <上下文:組分掃描基包= 「passwordcheck」/> \t \t \t <上下文:註解的配置/> \t <豆 \t \t類= 「org.springframework.web.servlet.view.InternalResourceViewResolver」> \t \t <屬性名= 「前綴」 值= 「/ WEB-INF/JSP /」/> \t \t <屬性名=」後綴「value =」。jsp「/> \t – user8579908

+0

這意味着上下文無法找到任何規則實現。您需要確保在應用程序上下文中至少有1個具體的規則實現(在您正在掃描的包中使用@Component註釋)。 – Chris

+0

謝謝工作 – user8579908