2013-07-27 114 views
1

我是Java配置新手。我有這樣的代碼。 SomeDao有自己的依賴關係,因爲我們正在做新的事情,我們不應該設置依賴關係嗎? 有人可以幫我理解這段代碼嗎?如何理解@Configuration

@Configuration 
public class DAOConfiguration { 
    @Bean(name = "someDao") 
    public SomeDao someDao() { 
     return new SomeDao(); 
    } 

回答

2

您是否熟悉xml是如何完成的?這是非常相似的。

以下爲SomeDao一個例子中的XML被設置成與Dep1(通過構造注射)和Dep2(通過setter注入):

<bean id="someDao" class="com.example.SomeDao"> 
    <constructor-arg ref="dep1"/> 
    <property name="dep2" ref="dep2"/> 
</bean> 

<bean id="dep1" class="com.example.Dep1" /> 
<bean id="dep2" class="com.example.Dep2" /> 

在JavaConfig此相同的例子被配置爲這樣:

@Configuration 
public class DAOConfiguration { 
    @Bean(name = "someDao") 
    public SomeDao someDao() { 
     final SomeDao someDao = new SomeDao(dep1()); 
     someDao.setDep2(dep2()); 
     return someDao; 
    } 

    @Bean(name="dep1") 
    public Dep1 dep1() { 
     return new Dep1(); 
    } 

    @Bean(name-"dep2") 
    public Dep2 dep2() { 
     return new Dep2(); 
    } 
} 

所有這三個bean仍然使用ApplicationContext進行註冊,因此您可以將這三個bean自動裝配到另一個類中,如下所示:

@Controller 
public class MyController { 
    @Autowired 
    private SomeDao someDao; 

    @Autowired 
    private Dep1 dep1; 

    //...some methods 
}