首页 / 操作系统 / Linux / Spring autowire 自动装配简介
Spring autowire 自动装配简介
注意本文与一般spring 标注@Autowire 无关如下例子定义了3个类 Dperson Dcar & Daddress
其中Dperson 要引用另外两个类Dpersonpackage 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;}@Overridepublic String toString() {return "Dperson [name=" + name + ", car=" + car + ", address="+ address + "]";}}Dcarpackage 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;}@Overridepublic String toString() {return "Dcar [brand=" + brand + ", price=" + price + "]";}}Daddresspackage 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;}@Overridepublic 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, 有就装配, 没有则赋值nullByType:<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有时的确会使程序猿更加方便。本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138194.htm