如何理解@Configuration

时间:2013-07-27 02:56:50

标签: spring configuration dependency-injection

我是Java配置的新手。我有这样的代码。 SomeDao有自己的依赖,我们不应该设置依赖,因为我们正在做新的? 有人可以帮我理解这段代码吗?

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

1 个答案:

答案 0 :(得分:2)

您熟悉如何在xml中完成此操作吗?它非常相似。

以下是在{xml}中使用SomeDao(通过构造函数注入)和Dep1(通过setter注入)配置Dep2的示例:

<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
}