Spring學習總結(1.2)-依賴注入及配置了解
來源:程序員人生 發布時間:2015-05-27 08:28:41 閱讀次數:3950次
前面的博客大概的講了1下IOC容器的理解,那末IOC的實現實際上依托于依賴注入的。簡單的說就是IOC是1種思想,而依賴注入為這類思想提供了實現。個人是這么理解的。本篇博客介紹兩種經常使用的注入方式,和他們的配置(基于XML)。
IOC容器說明
從最近的學習來看,特別是基于XML的配置情勢下。IOC容器就是1個生產線,它根據配置中類之間的持有關系,1個部件1個部件的組裝成1個完全的產品去履行1個完全的任務。從使用者的方向上看,他只能看到1個入口,而以后的處理他是不知道的。固然,這在沒有容器的概念的時候也是1樣的。不1樣的地方在于,容器是1個裝配者只有它知道各個部份之間的關系,它負責將各個部份組合成1個完全的產品。大概是這么個意思:
依賴注入
前面說過控制反轉,反轉的是創建被調用者的功能被反轉了,交給了IOC容器去處理。依賴注入是甚么呢?它就是IOC將被調用者提供給調用者的途徑。在運行的時候無需調用者自己創建被動用者,而是IOC容器像打針1樣將被調用者注入到調用者中去。那末最經常使用的注入方式有兩種:setter方法注入和構造函數注入。
setter方法
即通過set方法注入Bean的屬性值或依賴對象。這類方式注入需要提供1個默許的不帶參數構造函數。如果沒有構造函數,JVM默許提供1個默許的無參構造函數。當自己寫了構造函數時,由于JVM不再提供默許的構造函數,因此需要自己寫1個不帶參數的構造函數。否則拋出異常。
Car類
public class Car {
private String company;
private String brand;
private int maxSpeed;
private float price;
public void setBrand(String brand){
this.brand = brand;
}
public void setMaxSpeed(int maxSpeed){
this.maxSpeed = maxSpeed;
}
public void setPrice(double price){
this.price = price;
}
public void setCompany(String company){
this.company = company;
}
}
配置
<bean id = "car" class="com.tgb.spring.car">
<property name ="brand"><value>迷你</value></property>
<property name ="company"><value>寶馬</value></property>
<property name ="price"><value>220000</value></property>
<property name ="maxSpeed"><value>200</value></property>
</bean>
這類方式配置靈活簡單,以上也能看出來。這里還需要提1點,通過set方法注入時Spring只會檢查bean中是不是存在對應的set方法而不會檢查是不是存在對應的變量。只是,良好的習慣起見,通常都定義變量。
構造函數
通過構造函數的方式設置屬性的值和依賴對象是除set方法以為比較經常使用的方式了。這里需要提供有參數的構造函數。
car類
public class Car {
private String company;
private String brand;
private int maxSpeed;
private float price;
public Car(String company, String brand, float price) {
super();
this.company = company;
this.brand = brand;
this.price = price;
}
public Car(String company, String brand, int maxSpeed) {
super();
this.company = company;
this.brand = brand;
this.maxSpeed = maxSpeed;
}
public Car(String company, String brand, int maxSpeed, float price) {
super();
this.company = company;
this.brand = brand;
this.maxSpeed = maxSpeed;
this.price = price;
}
}
配置
<bean id="car" class="com.atguigu.spring.helloworld.Car">
<constructor-arg value="KUGA" index="1"></constructor-arg>
<constructor-arg value="ChangAnFord" index="0"></constructor-arg>
<constructor-arg value="250000" type="float"></constructor-arg>
</bean>
這里首先大家注意到bean中有3個帶參數的構造函數,另外1個需要注意的地方是配置中引入了index和type兩個標簽。這里通過你配置的參數個數、參數順序、參數類型來精肯定位你要使用的是哪個構造函數。這個自己體會1下。
其他
spring提供的配置功能是比較豐富的,處理基本的這些配置以外還有像,內部bean配置、自動裝配等1些有趣的配置。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈