基于Spring depends-on的使用詳解
通過在XML中的<bean>里配置depends-on屬性或者在一個(gè)類上使用注解@DependsOn,可以使一個(gè)Bean的產(chǎn)生依賴于其他幾個(gè)Bean。
請看如下代碼:<?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'> <bean depends-on='mother'></bean> <bean class='com.tyyd.lifecallbacks.domain.Mother'></bean></beans>
son這個(gè)Bean的產(chǎn)生依賴于mother這個(gè)Bean。
Spring Depends-On 不起作用beans-realation.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' xmlns:p='http://www.springframework.org/schema/p' xmlns:util='http://www.springframework.org/schema/util' xsi:schemaLocation='http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd'><!-- abstract='true' 則不能獲得這個(gè)bean 說明它只是一個(gè)模板,只能被繼承 --> <bean p:city='Beijing' p:street='ChangAnLu' abstract='true'> </bean><!-- 繼承bean的配置使用parent 屬性,但是沒有java 繼承的意思 --> <bean parent='address' p:street='HanSenLU'> </bean><!-- 要求person bean 必須有一個(gè)關(guān)聯(lián)的car ,意思就是說這個(gè)bean依賴car這個(gè)bean --> <bean depends-on='car' p:name='Tom' p:address-ref='address2' > </bean> <bean p:brand='AuDi' p:price='30000'> </bean></beans>
package com.yuxishua.beansrelation;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.yuxishua.autowire.Address;import com.yuxishua.autowire.Car;import com.yuxishua.autowire.Person;public class Main{ public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext('beans-realation.xml');Person person = (Person) ctx.getBean('person');Address address2 = (Address) ctx.getBean('address2');Car car = (Car) ctx.getBean('car');System.out.println(address2 );System.out.println(person);System.out.println(car); }}
package com.yuxishua.autowire;public class Person{ private String name; private Address address; private Car car; @Override public String toString() {return 'Person [name=' + name + ', address=' + address + ', car=' + car+ ']'; } public String getName() {return name; } public void setName(String name) {this.name = name; } public Address getAddress() {return address; } public void setAddress(Address address) {this.address = address; } public Car getCar() {return car; } public void setCar(Car car) {this.car = car; }}
package com.yuxishua.autowire;public class Car{ private String brand; private double price; public String getBrand() {return brand; } public void setBrand(String brand) {this.brand = brand; } public double getPrice() {return price; } public void setPrice(double price) {this.price = price; } @Override public String toString() {return 'Car [brand=' + brand + ', price=' + price + ']'; }}
package com.yuxishua.autowire;public class Address{ private String city; private String street; @Override public String toString() {return 'Address [city=' + city + ', street=' + street + ']'; } 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; }}
就上面的代碼,結(jié)果輸出
Person [name=Tom, address=Address [city=Beijing, street=HanSenLU], car=null]
car 為什么沒有注入呢,是spring版本的問題嗎?還是什么原因?
spring為4.0.8
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. ASP.Net MVC利用NPOI導(dǎo)入導(dǎo)出Excel的示例代碼2. adodb.recordset.open(rs.open)方法參數(shù)詳解3. asp文件如何打開4. 怎樣打開XML文件?xml文件如何打開?5. ASP和PHP文件操作速度的對比6. ASP替換、保存遠(yuǎn)程圖片實(shí)現(xiàn)代碼7. ASP中Server.HTMLEncode用法(附自定義函數(shù))8. Spring依賴注入的三種方式實(shí)例詳解9. WML教程之文本框控件Input10. ASP基礎(chǔ)入門第二篇(ASP基礎(chǔ)知識(shí))
