spring的自动装配

autowire:这个属性控制Bean是否自动装配,如果使用这个属性,Spring会自动使用下列方式之一来培植依赖性:

    no:(默认)必须在XML文件中使用<ref>元素定义Bean的引用

        如配置1:

<bean id="CustomerDAO" class="com.gaialine.po.CustomerDAO">//CustomerDao extends HibernateDaoSupport <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> 

    byName:按属性名进行自动装配,如果一个Bean暴露了一个abc属性,也就是说他有一个setAbc()方法,Spring将尝试在当前工厂中查找叫做abc的Bean定义,然后用它来设置abc属性

       如配置2:

 

<bean id="CustomerDAO" autowire="byName" class="com.gaialine.po.CustomerDAO">//CustomerDao extends HibernateDaoSupport</bean> 

       配置2等效配置1

    byType:如果BeanFactory中正好有一个同属性类型一样的Bean,就自动装配这个属性。如果没有找到对应类型,将会抛出org.springframework.beans.factory.UnsatisfiedDependencyException 比如类Computer有个属性printer,类型为Printer,那么,指定其autowire属性为byType后,Spring IoC容器会查找Class属性为Printer的bean,使用Seter方法为其注入。

    constructor:与byType类似,不过是应用与构造函数的参数,即它不是使用Seter方法注入,而是使用构造子注入。
    autodetect:default:由上级标签<beans>的default-autowire属性确定. 通过对Bean类的检查来选择constructor或者byType

 

一般开发都用的是NO,这样易于维护,出了错也很好查找

你可能感兴趣的:(spring,bean,xml,IOC,Class,Constructor)