Spring入门——Bean的自动装配(Autowring)

来源:互联网 发布:windows搭建服务器 编辑:程序博客网 时间:2024/05/16 02:44

Bean的自动装配(Autowiring)

No:不做任何操作

byname:根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配

byType:如果容器中存在一个与指定属性类型相同的bean,那么将该属性自动装配;如果存在多个该类型的Bean,那么抛出异常,并指出不能使用byType方式进行自动装配;如果没有找到相匹配的bean,则什么事都不发生

Constructor:与byType方式类似,不同之处在于它应用于构造参数。如果容器中没有找到与构造器参数类型一致的Bean,那么抛出异常


ByName例子:

AutoWiringDAO类

package com.txr.AutoWiring;public class AutoWiringDAO {public void say(String word){System.out.println("AutoWiringDAO :"+word);}}
AutoWiringService

package com.txr.AutoWiring;public class AutoWiringService {private AutoWiringDAO autoWiringDAO;public void setAutoWiringDAO(AutoWiringDAO autoWiringDAO) {this.autoWiringDAO = autoWiringDAO;}public void say(String word){autoWiringDAO.say(word);}}

配置文件

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"default-autowire="byName"><bean id="autoWiringService" class="com.txr.AutoWiring.AutoWiringService"/><bean id="autoWiringDAO" class="com.txr.AutoWiring.AutoWiringDAO"/></beans>

测试文件

package AutoWiring;import org.junit.Before;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.txr.AutoWiring.AutoWiringService;public class TestAutoWiring {private ApplicationContext context=null;@Beforepublic void init(){context=new ClassPathXmlApplicationContext("com/txr/resource/spring-ioc.xml");}@Testpublic void TestByName(){AutoWiringService autoWiringService=(AutoWiringService) context.getBean("autoWiringService");autoWiringService.say("this is test");}}

测试结果

AutoWiringDAO :this is test


例子ByType

配置文件改一下将

default-autowire="byName"

改为

default-autowire="byType"

测试结果一样

例子Constructor

将配置中 default-autowire="byName"改为default-autowire="constructor"

然后在Service添加构造方法

public AutoWiringService(AutoWiringDAO autoWiringDAO) {System.out.println("AutoWiringService");this.autoWiringDAO = autoWiringDAO;}

测试结果一样

根据构造器装配是根据构造器的传入bean的类型去构造的


0 0
原创粉丝点击