一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - 詳解Java的Spring框架下bean的自動(dòng)裝載方式

詳解Java的Spring框架下bean的自動(dòng)裝載方式

2020-03-09 12:34goldensun JAVA教程

這篇文章主要介紹了Java的Spring框架下bean的自動(dòng)裝載方式,Spring是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下

Spring容器可以自動(dòng)裝配相互協(xié)作bean之間的關(guān)系,這有助于減少對(duì)XML配置,而無需編寫一個(gè)大的基于Spring應(yīng)用程序的較多的<constructor-arg>和<property>元素。

自動(dòng)裝配模式:
有下列自動(dòng)裝配模式,可用于指示Spring容器使用自動(dòng)裝配依賴注入。使用<bean/>元素的autowire屬性為一個(gè)bean定義中指定自動(dòng)裝配模式。

byName模式
這種模式規(guī)定由自動(dòng)裝配屬性名稱。Spring容器在外觀上自動(dòng)線屬性設(shè)置為byName的XML配置文件中的bean。然后,它嘗試匹配和接線其屬性與配置文件中相同的名稱定義的Bean。如果找到匹配項(xiàng),它會(huì)注入這些bean,否則,它會(huì)拋出異常。

例如,如果一個(gè)bean定義設(shè)置為自動(dòng)裝配byName的配置文件,它包含aspellChecker屬性(即,它有一個(gè) setSpellChecker(...)方法),Spring就會(huì)查找名為拼寫檢查一個(gè)bean定義,并用它來設(shè)置該屬性。仍然可以使用的<property>標(biāo)簽連線其余屬性。下面的例子將說明這個(gè)概念。

來創(chuàng)建一個(gè)Spring應(yīng)用程序:
這里是TextEditor.java文件的內(nèi)容:

?
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.yiibai;
 
public class TextEditor {
  private SpellChecker spellChecker;
  private String name;
 
  public void setSpellChecker( SpellChecker spellChecker ){
   this.spellChecker = spellChecker;
  }
  public SpellChecker getSpellChecker() {
   return spellChecker;
  }
 
  public void setName(String name) {
   this.name = name;
  }
  public String getName() {
   return name;
  }
 
  public void spellCheck() {
   spellChecker.checkSpelling();
  }
}

下面是另外一個(gè)相關(guān)的類文件SpellChecker.java內(nèi)容:

?
1
2
3
4
5
6
7
8
9
10
11
12
package com.yiibai;
 
public class SpellChecker {
  public SpellChecker() {
   System.out.println("Inside SpellChecker constructor." );
  }
 
  public void checkSpelling() {
   System.out.println("Inside checkSpelling." );
  }
  
}

以下是MainApp.java文件的內(nèi)容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.yiibai;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class MainApp {
  public static void main(String[] args) {
   ApplicationContext context =
       new ClassPathXmlApplicationContext("Beans.xml");
 
   TextEditor te = (TextEditor) context.getBean("textEditor");
 
   te.spellCheck();
  }
}

以下是在正常情況下的配置文件beans.xml文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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-3.0.xsd">
 
  <!-- Definition for textEditor bean -->
  <bean id="textEditor" class="com.yiibai.TextEditor">
   <property name="spellChecker" ref="spellChecker" />
   <property name="name" value="Generic Text Editor" />
  </bean>
 
  <!-- Definition for spellChecker bean -->
  <bean id="spellChecker" class="com.yiibai.SpellChecker">
  </bean>
 
</beans>

但是,如果要使用自動(dòng)裝配“byName”,那么XML配置文件將如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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-3.0.xsd">
 
  <!-- Definition for textEditor bean -->
  <bean id="textEditor" class="com.yiibai.TextEditor"
   autowire="byName">
   <property name="name" value="Generic Text Editor" />
  </bean>
 
  <!-- Definition for spellChecker bean -->
  <bean id="spellChecker" class="com.yiibai.SpellChecker">
  </bean>
 
</beans>

創(chuàng)建源代碼和bean配置文件完成后,讓我們運(yùn)行應(yīng)用程序。如果一切順利,這將打印以下信息:

?
1
2
Inside SpellChecker constructor.
Inside checkSpelling.

byType模式
式規(guī)定由自動(dòng)裝配屬性類型。Spring容器在外觀上autowire屬性設(shè)置為byType的XML配置文件中的bean。然后,它嘗試匹配和連接一個(gè)屬性,如果它的類型有完全相同的豆子名稱的一個(gè)匹配的配置文件。如果找到匹配項(xiàng),它會(huì)注入這些bean,否則,它會(huì)拋出異常。

例如,如果一個(gè)bean定義設(shè)置為自動(dòng)裝配byType的配置文件,它包含拼寫檢查類型的aspellChecker屬性,春季查找名為拼寫檢查一個(gè)bean定義,并用它來設(shè)置該屬性。仍然可以使用<property>標(biāo)簽接線其余屬性。下面的例子將說明這個(gè)概念,會(huì)發(fā)現(xiàn)和上面的例子沒有什么區(qū)別,除了XML配置文件已被更改。

同樣,來創(chuàng)建一個(gè)Spring應(yīng)用程序說明:
這里是TextEditor.java文件的內(nèi)容:

?
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.yiibai;
 
public class TextEditor {
  private SpellChecker spellChecker;
  private String name;
 
  public void setSpellChecker( SpellChecker spellChecker ) {
   this.spellChecker = spellChecker;
  }
  public SpellChecker getSpellChecker() {
   return spellChecker;
  }
 
  public void setName(String name) {
   this.name = name;
  }
  public String getName() {
   return name;
  }
 
  public void spellCheck() {
   spellChecker.checkSpelling();
  }
}

下面是另外一個(gè)相關(guān)的類文件SpellChecker.java內(nèi)容:

?
1
2
3
4
5
6
7
8
9
10
11
12
package com.yiibai;
 
public class SpellChecker {
  public SpellChecker(){
   System.out.println("Inside SpellChecker constructor." );
  }
 
  public void checkSpelling() {
   System.out.println("Inside checkSpelling." );
  }
  
}

以下是MainApp.java文件的內(nèi)容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.yiibai;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class MainApp {
  public static void main(String[] args) {
   ApplicationContext context =
       new ClassPathXmlApplicationContext("Beans.xml");
 
   TextEditor te = (TextEditor) context.getBean("textEditor");
 
   te.spellCheck();
  }
}

以下是在正常情況下的配置文件beans.xml文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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-3.0.xsd">
 
  <!-- Definition for textEditor bean -->
  <bean id="textEditor" class="com.yiibai.TextEditor">
   <property name="spellChecker" ref="spellChecker" />
   <property name="name" value="Generic Text Editor" />
  </bean>
 
  <!-- Definition for spellChecker bean -->
  <bean id="spellChecker" class="com.yiibai.SpellChecker">
  </bean>
 
</beans>

但是,如果要使用自動(dòng)裝配“byType”,那么XML配置文件將如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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-3.0.xsd">
 
  <!-- Definition for textEditor bean -->
  <bean id="textEditor" class="com.yiibai.TextEditor"
   autowire="byType">
   <property name="name" value="Generic Text Editor" />
  </bean>
 
  <!-- Definition for spellChecker bean -->
  <bean id="SpellChecker" class="com.yiibai.SpellChecker">
  </bean>
 
</beans>

當(dāng)創(chuàng)建源代碼和bean配置文件完成后,讓我們運(yùn)行應(yīng)用程序。如果一切順利,這將打印以下信息:

?
1
2
Inside SpellChecker constructor.
Inside checkSpelling.

由構(gòu)造函數(shù)自動(dòng)裝配
這種模式是非常相似byType,但它應(yīng)用于構(gòu)造器參數(shù)。 Spring容器在外觀上autowire屬性被設(shè)置XML配置文件中bean的。然后,它嘗試匹配和連線它的構(gòu)造函數(shù)的參數(shù)與bean名稱的配置文件只有一個(gè)。如果找到匹配項(xiàng),它會(huì)注入這些bean,否則,它會(huì)拋出異常。

例如,如果一個(gè)bean定義設(shè)置為通過構(gòu)造配置文件自動(dòng)裝配,它具有與拼寫檢查類型的參數(shù)之一的構(gòu)造函數(shù),春天尋找一個(gè)bean定義namedSpellChecker,并用它來設(shè)置構(gòu)造函數(shù)的參數(shù)。仍然可以使用<constructor-arg>標(biāo)簽連線剩余的參數(shù)。下面的例子將說明這個(gè)概念。
這里是TextEditor.java文件的內(nèi)容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.yiibai;
 
public class TextEditor {
  private SpellChecker spellChecker;
  private String name;
 
  public TextEditor( SpellChecker spellChecker, String name ) {
   this.spellChecker = spellChecker;
   this.name = name;
  }
  public SpellChecker getSpellChecker() {
   return spellChecker;
  }
  public String getName() {
   return name;
  }
 
  public void spellCheck() {
   spellChecker.checkSpelling();
  }
}

下面是另外一個(gè)相關(guān)的類文件SpellChecker.java內(nèi)容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
package com.yiibai;
 
public class SpellChecker {
  public SpellChecker(){
   System.out.println("Inside SpellChecker constructor." );
  }
 
  public void checkSpelling()
  {
   System.out.println("Inside checkSpelling." );
  }
  
}

以下是MainApp.java文件的內(nèi)容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.yiibai;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class MainApp {
  public static void main(String[] args) {
   ApplicationContext context =
       new ClassPathXmlApplicationContext("Beans.xml");
 
   TextEditor te = (TextEditor) context.getBean("textEditor");
 
   te.spellCheck();
  }
}

以下是在正常情況下的配置文件beans.xml文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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-3.0.xsd">
 
  <!-- Definition for textEditor bean -->
  <bean id="textEditor" class="com.yiibai.TextEditor">
   <constructor-arg ref="spellChecker" />
   <constructor-arg value="Generic Text Editor"/>
  </bean>
 
  <!-- Definition for spellChecker bean -->
  <bean id="spellChecker" class="com.yiibai.SpellChecker">
  </bean>
 
</beans>

但是,如果要使用由“構(gòu)造函數(shù)”自動(dòng)裝配,那么XML配置文件將如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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-3.0.xsd">
 
  <!-- Definition for textEditor bean -->
  <bean id="textEditor" class="com.yiibai.TextEditor"
   autowire="constructor">
   <constructor-arg value="Generic Text Editor"/>
  </bean>
 
  <!-- Definition for spellChecker bean -->
  <bean id="SpellChecker" class="com.yiibai.SpellChecker">
  </bean>
 
</beans>

創(chuàng)建源代碼和bean配置文件完成后,讓我們運(yùn)行應(yīng)用程序。如果一切順利,這將打印以下信息:

?
1
2
Inside SpellChecker constructor.
Inside checkSpelling.

除此之外,還有autodetect和默認(rèn)方式,這里就不再細(xì)講。
自動(dòng)裝配的局限性:
自動(dòng)裝配最好效果是它始終在一個(gè)項(xiàng)目中使用。如果自動(dòng)裝配不一般的使用,它可能會(huì)被混淆為開發(fā)人員可以使用它來連接只有一個(gè)或兩個(gè)bean定義。不過,自動(dòng)裝配可以顯著減少需要指定屬性或構(gòu)造器參數(shù),但你應(yīng)該使用它們之前考慮自動(dòng)裝配的局限性和缺點(diǎn)。

詳解Java的Spring框架下bean的自動(dòng)裝載方式

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91香蕉国产| 色综合图区| 免费一级毛片在级播放 | 日本视频免费在线播放 | 3d动漫美女物被遭强视频 | 色依依视频视频在线观看 | 成在线人免费 | 50度灰破解版v5.7.0 | 精品无码一区在线观看 | 亚洲激情在线 | 亚洲人的天堂男人爽爽爽 | 久久久亚洲国产精品主播 | 国产成人一区二区三区影院免费 | 欧美人与禽杂交大片 | 国产人成激情视频在线观看 | 亚洲国产欧美另类 | www.青草视频 | 奇米色7777| 日本丰满www色 | 亚洲第一区二区快射影院 | 日韩综合一区 | 公园吃女人奶野战视频 | 欧美 亚洲 综合 卡通 另类 区 | 亚洲国产精品久久精品怡红院 | 亚洲精品国产成人中文 | 国内精品久久久久小说网 | 国产一区二区三区在线观看视频 | 爱情岛论坛亚洲品质自拍视频 | 亚洲第五色综合网啪啪 | 亚洲男人天堂久久 | 麻豆网站视频国产在线观看 | 日韩精品欧美高清区 | 国产小视频免费看 | 日本大学jalapsikix | 亚洲黄网站wwwwww| 女海盗斯蒂内塔的复仇2免费观看 | 欧洲男同直粗无套播放视频 | 王小军怎么了最新消息 | 大学生初次破苞免费视频 | 亚洲免费视频在线观看 | 特级一级全黄毛片免费 |