基于Spring depends-on的使用詳解
通過(guò)在XML中的<bean>里配置depends-on屬性或者在一個(gè)類上使用注解@DependsOn,可以使一個(gè)Bean的產(chǎn)生依賴于其他幾個(gè)Bean。
請(qǐng)看如下代碼:<?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 說(shuō)明它只是一個(gè)模板,只能被繼承 --> <bean p:city='Beijing' p:street='ChangAnLu' abstract='true'> </bean><!-- 繼承bean的配置使用parent 屬性,但是沒(méi)有java 繼承的意思 --> <bean parent='address' p:street='HanSenLU'> </bean><!-- 要求person bean 必須有一個(gè)關(guān)聯(lián)的car ,意思就是說(shuō)這個(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 為什么沒(méi)有注入呢,是spring版本的問(wèn)題嗎?還是什么原因?
spring為4.0.8
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. js select支持手動(dòng)輸入功能實(shí)現(xiàn)代碼2. php redis setnx分布式鎖簡(jiǎn)單原理解析3. vue使用moment如何將時(shí)間戳轉(zhuǎn)為標(biāo)準(zhǔn)日期時(shí)間格式4. PHP正則表達(dá)式函數(shù)preg_replace用法實(shí)例分析5. Android 實(shí)現(xiàn)徹底退出自己APP 并殺掉所有相關(guān)的進(jìn)程6. 什么是Python變量作用域7. Android Studio3.6.+ 插件搜索不到終極解決方案(圖文詳解)8. bootstrap select2 動(dòng)態(tài)從后臺(tái)Ajax動(dòng)態(tài)獲取數(shù)據(jù)的代碼9. 如何在PHP中讀寫(xiě)文件10. Android studio 解決logcat無(wú)過(guò)濾工具欄的操作
