Spring Bean的自动装配的方式:
byName:根据属性名自动装配,这个选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。
byType:如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配;如果存在多个该类型的bean,那么抛出异常,如果没有找到相匹配的bean,则什么事都不发生。
Constructor:与byType方式相似,不同之处在于他应用于构造器参数,如果容器中没有找到与构造器参数类型一直的bean,则抛出异常。
配置的xml文件如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="byName"> <bean id="autoWiringService" class="com.imooc.autowiring.AutoWiringService" ></bean> <bean id="autoWiringDAO" class="com.imooc.autowiring.AutoWiringDAO" ></bean> </beans>
default-autowire="byName"表示使用byName模式,此时要求在 AutoWiringService类中有如下定义:
private AutoWiringDAO autoWiringDAO; public void setAutoWiringDAO(AutoWiringDAO autoWiringDAO) { System.out.println("setAutoWiringDAO"); this.autoWiringDAO = autoWiringDAO; }
即可通过该set方法给 autoWiringDAO 实例化一个对象。如果 id="autoWiringDAO" 与 AutoWiringDAO autoWiringDAO名称不一致,则什么也不发生。
default-autowire="byType"方式,此方式与name无关,只要求 com.imooc.autowiring.AutoWiringDAO的类型与 AutoWiringDAO autoWiringDAO的类型一致。
default-autowire="constructor"方式,要求在 AutoWiringService 类中定义一个构造器,传入的参数要与com.imooc.autowiring.AutoWiringDAO的类型保持一致。
浙公网安备 33010602011771号