国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring的自動裝配Bean的三種方式

Spring的自動裝配Bean的三種方式

2020-08-20 11:24漏斷人初靜 Java教程

本篇文章主要介紹了 Spring的自動裝配Bean的三種方式,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

spring的自動裝配功能的定義:無須在Spring配置文件中描述javaBean之間的依賴關系(如配置<property>、<constructor-arg>)。IOC容器會自動建立javabean之間的關聯關系。

如果沒有采用自動裝配的話,手動裝配我們通常在配置文件中進行實現:一下代碼就是手動裝配:

?
1
2
3
4
5
6
7
8
9
10
<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-3.0.xsd">
 
  <bean id="customerDAO" class="com.hebeu.customer.dao.JdbcCustomerDAO">
    <property name="dataSource" ref="dataSource" />
  </bean>
 
</beans>

通過<property name="dataSource" ref="dataSource" />向customerDAO的bean中注入了dataSource

在Spring框架,可以用 auto-wiring 功能會自動裝配Bean。要啟用它,只需要在 <bean>定義“autowire”屬性。

?
1
<bean id="customer" class="com.yiibai.common.Customer" autowire="byName" />

在Spring中,支持 5 自動裝配模式。

  • no – 缺省情況下,自動配置是通過“ref”屬性手動設定
  • byName – 根據屬性名稱自動裝配。如果一個bean的名稱和其他bean屬性的名稱是一樣的,將會自裝配它。
  • byType – 按數據類型自動裝配。如果一個bean的數據類型是用其它bean屬性的數據類型,兼容并自動裝配它。
  • constructor – 在構造函數參數的byType方式。
  • autodetect – 如果找到默認的構造函數,使用“自動裝配用構造”; 否則,使用“按類型自動裝配”?!驹赟pring3.0以后的版本被廢棄,已經不再合法了】

第一種自動裝配【根據屬性名稱自動裝配】

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.hebeu.model;
 
public class Customer {
 
  private Address address;
   
  public Customer() {
     
  }
   
  public Customer(int id, Address address) {
    super();
    this.address = address;
  }
 
  public Address getAddress() {
    return address;
  }
 
  public void setAddress(Address address) {
    this.address = address;
  }
   
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.hebeu.model;
 
public class Address {
 
  private String fulladdress;
   
  public Address(){
     
  }
   
  public Address(String addr){
    this.fulladdress = addr;
  }
 
  public String getFulladdress() {
    return fulladdress;
  }
 
  public void setFulladdress(String fulladdress) {
    this.fulladdress = fulladdress;
  }
   
}
?
1
2
3
4
5
6
7
8
9
10
11
12
<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-3.0.xsd">
   
  <bean id="customer" class="com.hebeu.model.Customer" autowire="byName"></bean>
   
  <bean id="address" class="com.hebeu.model.Address">
    <property name="fulladdress" value="YiLong Road, CA 188"></property>
  </bean>
   
</beans>

這樣就將address注入到Customer中。這就是自動注入ByName.在Customer bean中公開了一個屬性address,Spring容器會找到address bean,并且裝配。這里必須要注意,Customer中要被注入的bean的set方法要求必須是public的,否則會報空指針異常。還有配置的bean的id必須和Customer中聲明的變量名相同。

第二種自動裝配【根據數據類型自動裝配】

聲明的倆個bean同樣為Customer以及Address,將applicationContext.xml轉換為這樣的就是實現根據數據類型進行自動裝配。

?
1
2
3
4
5
6
7
8
9
10
11
<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-3.0.xsd">
   
  <bean id="customer" class="com.hebeu.model.Customer" <strong><span style="color:#FF0000;">autowire="byType"</span></strong>></bean>
   
  <bean id="bean1" class="com.hebeu.model.Address">
    <property name="fulladdress" value="YiLong Road, CA 188"></property>
  </bean>
</beans

類型自動裝配的意思是如果一個bean的數據類型與其他的bean屬性的數據類型相同,將會自動兼容裝配它。當然要求只能配置一個某一個類型的bean.如果配置成這樣,那么是會出錯的。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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-3.0.xsd">
   
  <bean id="customer" class="com.hebeu.model.Customer" autowire="byType"></bean>
   
  <bean id="bean1" class="com.hebeu.model.Address">
    <property name="fulladdress" value="YiLong Road, CA 188"></property>
  </bean>
  <bean id="bean2" class="com.hebeu.model.Address">
    <property name="fulladdress" value="YiLong Road, CA 188"></property>
  </bean>
</beans>

第三種自動裝配【根據構造方法自動裝配】

案例同上,將applicationContext.xml轉換為如下,就實現了按照構造方法自動裝配:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<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-3.0.xsd">
   
  <bean id="customer" class="com.hebeu.model.Customer">
    <!-- 構造方法的參數 -->
    <constructor-arg>
      <ref bean="bean1"/>
    </constructor-arg>
  </bean>
   
  <bean id="bean1" class="com.hebeu.model.Address">
    <property name="fulladdress" value="YiLong Road, CA 188"></property>
  </bean>
   
</beans>

 它實際上是構造函數的參數類型自動裝配。這意味著如果一個bean的數據類型與其他bean的構造器參數的數據類型是相同的,那么就自動裝配。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/qq_28663043/article/details/56495501?locationNum=2&fps=1

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 天天干夜夜弄 | 欧美人交a欧美精品 | 欧美一级黄色片网站 | 丝袜美腿一区二区三区 | 91在线电影 | 搞黄网站| 91在线看片| 一区二区日韩 | 成人影视免费 | 国产一级一级国产 | 一本久道久久综合狠狠爱 | 久久久91精品国产一区二区三区 | 亚洲va欧美va人人爽成人影院 | 成人福利视频 | 日韩一区精品视频 | 欧美综合一区二区三区 | 青草视频网站 | 久久av一区二区三区 | 久久久久久国产精品mv | 久久久天堂国产精品 | 99亚洲精品 | 簧片毛片| 综合久久99 | 久久69精品久久久久久久电影好 | 91aiai| 性爽视频 | 久久久精品国产亚洲 | 91在线观看 | 1000部精品久久久久久久久 | 日韩一区二区在线观看 | 亚洲精品一区二区三区不 | 亚洲美女在线视频 | 日韩免费 | 久久久久亚洲美女啪啪 | 一区二区国产在线观看 | 蜜桃一区 | 国产三级一区 | 精品在线一区 | 免费午夜电影 | 91一区二区 | 人人爽视频 |