Spring autowire 自动装配简介
2016-05-19 23:36
471 查看
Spring autowire 自动装配简介
注意本文与一般spring 标注@Autowire 无关如下例子定义了3个类 Dperson Dcar & Daddress
其中Dperson 要引用另外两个类
Dperson
package com.home.autowire; public class Dperson { private String name; private Dcar car; private Daddress address; public String getName() { return name; } public void setName(String name) { this.name = name; } public Dcar getCar() { return car; } public void setCar(Dcar car) { this.car = car; } public Daddress getAddress() { return address; } public void setAddress(Daddress address) { this.address = address; } @Override public String toString() { return "Dperson [name=" + name + ", car=" + car + ", address=" + address + "]"; } }
Dcar
package com.home.autowire; public class Dcar { private String brand; private int price; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } @Override public String toString() { return "Dcar [brand=" + brand + ", price=" + price + "]"; } }
Daddress
package com.home.autowire; public class Daddress { private String city; private String street; private int number; public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } @Override public String toString() { return "Daddress [city=" + city + ", street=" + street + ", number=" + number + "]"; } }
一般的bean定义方法(xml)
注意下面引用了p Namespace<bean id="car" class="com.home.autowire.Dcar" p:brand="Audi" p:price="10000"/> <bean id="address" class="com.home.autowire.Daddress" p:city="Canton" p:street="teenho" p:number="103"/> <!-- normal assemble --> <bean id="person1" class="com.home.autowire.Dperson" p:name="Bill" p:car-ref="car" p:address-ref="address"/>
上面这个方法是最常用的, 也是最清晰的, 一般项目也推荐上面的方法。
autowire 自动装配
在这个例子种, 所谓autowire 自动装配就是指 不用在Dperson类的bean中手动指定每个属性的值, spring会根据ByName或者ByType去找ByName:
<bean id="car" class="com.home.autowire.Dcar" p:brand="Audi" p:price="10000"/> <bean id="address" class="com.home.autowire.Daddress" p:city="Canton" p:street="teenho" p:number="103"/> <!-- auto wire--> <bean id="person2" class="com.home.autowire.Dperson" p:name="Lily" autowire="byName"/>
上面的例子例子, bean person2 会在spring xml种查找有没有 跟属性名一样名字的bean, 有就装配, 没有则赋值null
ByType:
<bean id="car1" class="com.home.autowire.Dcar" p:brand="Audi" p:price="10000"/> <bean id="address1" class="com.home.autowire.Daddress" p:city="Canton" p:street="teenho" p:number="103"/> <!-- auto wire byType--> <bean id="person3" class="com.home.autowire.Dperson" p:name="Jessie" autowire="byType"/>
万一找不到跟属性名一样的bean, 也可以通过byTime来自动装配的
小结
autowire会令到spring 配置文件更加简介, 但是可读性下降了, 一般情况下其实不建议使用, 但是某些特殊情况, 例如spring 嵌入其他framework(strurt2 hibernate), autowire有时的确会使程序猿更加方便。相关文章推荐
- SpringMVC之DispatcherServlet处理请求详解
- java之ReentrantLock公平锁和非公平锁
- Java Core和HeapDump
- 深入分析 Java 中的中文编码问题(1)
- Java发展历史
- 基于CXF Servlet方式发布Restful的Web服务(入门篇)
- 包装类
- Java编码浅析(注意区分三个概念)(转)
- 第一章 答疑摘选
- java-ThreadLocal是解决线程安全问题
- 说说eclipse调优,缩短启动时间
- Mybatis_java项目
- Java注册帐号邮箱激活验证实现
- Spring学习(三)IOC控制反转与DI依赖注入
- JavaMai——邮箱验证用户注册
- POJO——简单Java对象
- Windows 下的 Java JDK安装
- 4,由spring展开的串烧
- java- List
- [Java]泛型总结