Spring2.5.6及其以上版本注解Bean与XML Bean的相关问题
之前在项目中用了Spring2.5.6,其中最爽的当推近乎“零配置”的功能。所有的业务Bean和DAO组件都只要用Service、Repository注释一下,然后通过Resource注释进行依赖注入,也省去了相应的setter方法。当然,像SessionFactory,DataSource这些Bean还是通过XML配置比较好一点。
前天在迁移到Spring3.0.1的时候,发现DAO组件的实例化不能完成,总是报缺少sessionFactory或者hibernateTemplate的错误,查了好多资料,都觉得不怎么如意,最后把spring的配置文件和原来的比较了一下,发现了<beans>中缺少一个属性:default-autowire这个属性的取值,3.x与2.x的取值有点不一样,3.x中可以取byName,byType等值,这里,我采取的是byName,这样,注释的Bean在初始化的时候,就可以能过名称从XML配置的Bean中获取依赖的实例(XML配置的Bean优先实例化),也就不会再报前面提到的错误了。