Spring學習(2)--在xml中使用autowire自動裝配Bean屬性
spring的自動裝配:是指對於當前需要裝配的bean的屬性,不用使用手工方式顯示裝配,而是讓spring自己通過在IOC容器中按照一定的規則查詢相關的符合條件的bean,裝配為bean的屬性。
<bean>的autowire屬性有六個值,說明如下:
1、 No:即不啟用自動裝配。Autowire預設的值。
2、 byName:通過屬性的名字的方式查詢JavaBean依賴的物件併為其注入。
3、 byType:通過屬性的型別查詢JavaBean依賴的物件併為其注入。
4、 constructor:通byType一樣,也是通過型別查詢依賴物件。與byType的區別在於它不是使用
5、 autodetect:在byType和constructor之間自動的選擇注入方式。
6、 default:由上級標籤<beans>的default-autowire屬性確定。
注意:在配置bean時,<bean>標籤中Autowire屬性的優先順序比其上級標籤高,即是說,如果在上級標籤中定義default-autowire屬性為byName,而在<bean>中定義為byType時,Spring IoC容器會優先使用<bean>標籤的配置。
這裡主要寫byName和byType兩種方式。
首先有三個類 :Person、Car、Address
Java檔案程式碼:
package com.study.autowire; public class Person { private String name; private Address address; private 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; } @Override public String toString() { return "Person [name=" + name + ", address=" + address + ", car=" + car + "]"; } }
package com.study.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.study.autowire;
public class Address {
private String city;
private String 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;
}
@Override
public String toString() {
return "Address [city=" + city + ", street=" + street + "]";
}
}
配置bean:car、address
<bean id="address" class="com.study.autowire.Address" p:city="hefei"
p:street="hezuohualu"></bean>
<bean id="car" class="com.study.autowire.Car" p:brand="bwm"
p:price="420000"></bean>
手動裝配:
<!--手動裝配 -->
<bean id="person" class="com.study.autowire.Person"
p:name="zhangshiwei" p:address-ref="address" p:car-ref="car"></bean>
使用autowire屬性指定自動裝配的方式:
<!--使用autowire屬性指定自動裝配的方式
byName根據bean的名字和當前bean中設定的setter風格的屬性名進行自動裝配,若有匹配的則自動裝配,若沒有匹配的,則不裝配。
-->
<bean id="person1" class="com.study.autowire.Person"
p:name="zhangshiwei" autowire="byName"></bean>
<!--使用autowire屬性指定自動裝配的方式
byType根據bean的型別和當前bean的屬性的型別進行自動裝配,若IOC容器中有一個以上型別匹配的bean,則拋異常。
-->
<bean id="person2" class="com.study.autowire.Person"
p:name="zhangshiwei" autowire="byType"></bean>
自動裝配的缺點:
1.自動裝配將會裝配bean的所有屬性,若只希望裝配個別屬性時,使用autowire屬性就不夠靈活了。
2.自動裝配只能選擇一種方式進行裝配,如要麼選擇byName ,要麼選擇byType,不能兩者兼而有之。
相關推薦
Spring學習(2)--在xml中使用autowire自動裝配Bean屬性
spring的自動裝配:是指對於當前需要裝配的bean的屬性,不用使用手工方式顯示裝配,而是讓spring自己通過在IOC容器中按照一定的規則查詢相關的符合條件的bean,裝配為bean的屬性。 <bean>的autowire屬性有六個值,說明如下: 1、
Spring 學習(五)——XML 配置裡的 Bean 自動裝配
XML 配置裡的 Bean 自動裝配 •Spring IOC 容器可以自動裝配 Bean. 需要做的僅僅是在 <bean> 的 autowire 屬性裡指定自動裝配的模式 •byType(根據型別自動裝配): 若 IOC 容器中有多個與目標 Bean 型別一致的 Bean. 在這
spring學習(四)xml檔案的BeanDefinition讀取
上一節中說明了spring在讀取bean時主要的方法refresh中,首先要把配置和註解的bean檔案以beanDefintion的形式快取起來,這個方法是refreshBeanFactory() 各類呼叫的程式圖如下 @Override protected fin
spring基礎知識 (15):使用註解自動裝配bean
一般情況下,控制層(controller)需要呼叫業務層(service)進行業務邏輯處理,業務層呼叫持久層(dao)訪問資料庫。這時候就需要使用自動裝配注入相應的bean.在controller中注入service,在service中注入reposito
Java學習(2):將鍵盤錄入的內容保存到指定文件中
stream exce 創建 txt 關閉 如果 下午 line 再次 要求:保存鍵盤錄入的內容,當鍵盤輸入end時,錄入結束。 1 /** 2 * 保存鍵盤輸入,並以end結束 3 * 4 * @author xcx 5 * @time 2017年6
Hibernate學習(2)- hibernate.cfg.xml詳解
source nec cfg 更新 閱讀 username 詳解 格式化sql BE 1:主配置文件主要分為三部分: 註意:通常情況下,一個session-factory節點代表一個數據庫; 1.1:第一部分 數據庫連接部分,註意"hibernate
Xml學習(2)
1、CDATA區: 非法字元 嚴格的講,在XML中僅有字元“<”和“&”是非法的。省略號、引號和大於號是合法的,但是把它們替換為實體引用是個好習慣。 < < &
python學習筆記——(2)pandas中的資料型別
在用python進行資料處理的時候,自帶的五種資料型別使用起來顯然是有侷限性的,python之強大在於各種包,在資料處理中用的最多的就是pandas和numpy。本文章主要介紹pandas的資料結構。 pandas有兩種資料結構  
spring學習(四)使用註解代替xml配置
用的是IDEA的maven工程,pom.xml檔案導包依賴省略 一、書寫要匯入容器的實體類 import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation
Spring 學習(十)——IOC 容器中 Bean 的生命週期
IOC 容器中 Bean 的生命週期方法 •Spring IOC 容器可以管理 Bean 的生命週期, Spring 允許在 Bean 生命週期的特定點執行定製的任務. •Spring IOC 容器對 Bean 的生命週期進行管理的過程: –通過構造器或工廠方法建立 Bean 例項
Spring 學習(三)——Spring 中的 Bean 配置
配置形式:基於 XML 檔案的方式;基於註解的方式 Bean 的配置方式:通過全類名(反射)、通過工廠方法(靜態工廠方法 & 例項工廠方法)、FactoryBean IOC 容器 BeanFactory & ApplicationContext 概述 依賴注入
Spring基礎(2)——Spring中裝入bean的幾種方法
上一篇文章描述了spring裝配bean的自動化裝配技術 下面主要描述一下spring裝配bean的顯示配置,其中顯示配置有兩種方案,Java配置和XML。 為啥需要有顯示配置的?其實主要是考慮到第三方外掛,我們無法通過標註@Component和@Autowir
javaWeb學習(2)——web.xml和pom.xml都是幹嘛用的
web.xml和pom.xml看起來差不多都是仨字母,檔案字尾都一樣 對於初學者來講,剛接觸這裡面的東西,感覺亂七八糟的傻傻弄不清楚 我也以一個初學者的角度,說說自己的理解 一、POM啥意思呢,百度了一下叫專案物件模型------->該檔案用於管理:原始碼、配置檔案、
深度學習(2)--深度學習中的這25個概念
神經網路基礎1)神經元(Neuron)——就像形成我們大腦基本元素的神經元一樣,神經元形成神經網路的基本結構。想象一下,當我們得到新資訊時我們該怎麼做。當我們獲取資訊時,我們一般會處理它,然後生成一個輸出。類似地,在神經網路的情況下,神經元接收輸入,處理它併產生輸出,而這個輸
tensorflow學習(2):tensorflow中基本概念的理解
前言: tensorflow中有很多基本概念要理解,最好的方法是去官網跟著教程一步一步看,這裡還有一些翻譯的版本,對照著看有助於理解:tensorflow1.0 文件翻譯 正文: 一,構建並執行計算圖的必要過程 1,graph(圖計算):詳見tf.G
spring cloud 學習(2)核心: Eureka: 提供服務註冊和發現 註冊中心,負載均衡,故障轉移
官方描述:雲端服務發現,一個基於 REST 的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移 Eureka 一個服務中心,一個註冊中心,將可以提供的服務都註冊到這個元件中, ,其他呼叫者需要的時候去註冊中心去獲取,然後再呼叫,避免了服務間的直接呼叫,實現了服務間的解耦
java反射學習筆記(2)----java中的靜態載入類和動態載入類
首先我們要了解java中的編譯和執行的兩個概念,我們在初學java的時候都學過,我們會先寫一個Test.java檔案,然後javac Test.java,最後在java Test 。這其中的java
Spring學習(1)--使用xml配置Bean屬性
使用xml配置Bean屬性之前需要先定義對應的XML和對應xsd檔案: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/
機器學習總結(2)—分類中的代數模型
前言 過去幾個月,一直在學習機器學習模型,輸入只是學習的一部分,輸出可以幫助自己更熟練地掌握概念和知識。把一個複雜的事物簡單的講述出來,才能夠證明真正弄懂了這個知識。所以我將在部落格中儘量簡單地把這些模型講述出來,以加深自己的掌握,也為他人提供一點點參考。在此感謝大神劉建平Pinard的部落格,如有任何疑
javascript學習(2)循環
src .cn tin asc for循環 循環 分享 ava bre 一、for循環 1、for(i=1;i<6;i++)循環 2、for(x in arrayA)循環 二、while循環 1、while循環 2、do。。while循環 三、continue