为什么在spring中介绍文档中bean的定义都是这样写的:
<bean id="mapper" class="com.whatever.dataaccess.mapper.hibernate.MapperImpl"> <property name="sessionFactory" ref="hibSessionFactory"/> </bean>
需要注入sessionFactory
而项目中,只是定义一个bean?
<bean id="contentDAO"
class="com.topsoft.wcms.content.domain.dao.ContentDAOImpl" />
而没有<property name="sessionFactory" ref="hibSessionFactory"/>
为什么?
关键在于项目上的一个关键属性:default-autowire="byName",自动按名称装配。
来看看这个自动装配的解释:
根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。例如,在bean定义中将autowire设置为by name,而该bean包含master属性(同时提供setMaster(..)方法),Spring就会查找名为master的bean定义,并用它来装配给master属性。
在spring配置文件中都会有一个id为sessionFactory的bean,spring会将这个注入过去,所以不用在写那个属性。