最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Spring由構(gòu)造方法自動(dòng)裝配

 更新時(shí)間:2021年08月09日 14:40:57   作者:Remember_Ray  
這篇文章主要介紹了使用Spring由構(gòu)造方法自動(dòng)裝配,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Spring由構(gòu)造方法自動(dòng)裝配

在Spring中,可以使用“通過構(gòu)造自動(dòng)裝配”,實(shí)際上是按構(gòu)造函數(shù)的參數(shù) 類型自動(dòng)裝配。 這意味著,如果一個(gè)bean的數(shù)據(jù)類型與其他bean的構(gòu)造器參數(shù)的數(shù)據(jù)類型是相同的,那么將自動(dòng)裝配。

下面看看Spring構(gòu)造函數(shù)自動(dòng)裝配的一個(gè)完整例子。

1. Beans

這里有兩個(gè) beans, 分別是:developer 和 language

public class Developer { 
 private Language language; 
 public Language getLanguage() {
  return language;
 }
 
 public void setLanguage(Language language) {
  this.language = language;
 }
 
 @Override
 public String toString() {
  return "Developer [language=" + language + "]";
 } 
}
public class Language { 
 private String name; 
 public String getName() {
  return name;
 }
 
 public void setName(String name) {
  this.name = name;
 }
 
 @Override
 public String toString() {
  return "Language [name=" + name + "]";
 } 
}

2. Spring裝配

通常情況下,你可以通過構(gòu)造這樣自動(dòng)裝配 Bean:

<?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 id="developer" class="com.ray.common.Developer">
  <constructor-arg>
   <ref bean="language"/>
  </constructor-arg>
 </bean>
 
 <bean id="language" class="com.ray.common.Language">
  <property name="name" value="Java"/>
 </bean>
</beans>

輸出

Developer [language=Language [name=Java]]

隨著自動(dòng)裝配用構(gòu)造函數(shù)啟用后,你可以不設(shè)置構(gòu)造器屬性。Spring會(huì)找到兼容的數(shù)據(jù)類型,并自動(dò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 id="developer" class="com.ray.common.Developer" autowire="constructor" />
  
 <bean id="language" class="com.ray.common.Language">
  <property name="name" value="Java"/>
 </bean>
</beans>

輸出

Developer [language=Language [name=Java]]

spring的五種自動(dòng)裝配方式

當(dāng)Spring裝配Bean屬性時(shí),有時(shí)候非常明確,就是需要將某個(gè)Bean的引用裝配給指定屬性。

先寫兩個(gè)類

public class UserServcie { 
    private UserDao userDao; 
    public UserServcie(UserDao userDao){}
    public void setUserDao(UserDao userDao){
        this.userDao = userDao;
    }
    public UserDao getUserDao(){
        return userDao;
    }
} 
public class UserDao {
}

例如:在UserServcie中注入U(xiǎn)serDao需要顯式的手動(dòng)裝配

<bean id="userDao" class="com.beans.UserDao"></bean>
<bean id="userService" class="com.beans.UserServcie">
   <property name="userDao" ref="userDao"></property>
</bean>

這種寫法會(huì)是開發(fā)效率變慢。

因此出現(xiàn)了spring的自動(dòng)裝配方式:五種自動(dòng)裝配方式 no、byName、byType、constructor、default。

1、no

當(dāng)使用autowire="no"時(shí),不使用自動(dòng)裝配,依然需要手動(dòng)裝配,需要顯式指定某個(gè)bean的引用。

<bean id="userService" class="com.beans.UserServcie" autowire="no">
     <property name="userDao" ref="userDao"></property>
</bean>

2、byName

使用autowire="byName"裝配方式時(shí),就是使用名字裝配,不需要顯式指定某個(gè)bean的引用,此時(shí)使用的是setter方式注入。此時(shí)要注意需要被注入的bean的id和注入的bean的屬性名之間的匹配,否則失敗注入不成功。

例如:UserService中需要注入U(xiǎn)serDao, private UserDao userDao,當(dāng)byName注入時(shí),spring會(huì)在ioc容器中尋找id="userDao"的對象,找到注入成功,找不到注入失敗。

public class UserServcie { 
    private UserDao userDao; 
    public UserServcie(UserDao userDao){}
    public void setUserDao(UserDao userDao){
        this.userDao = userDao;
    }
    public UserDao getUserDao(){
        return userDao;
    }
}

此時(shí)的配置文件為

<bean id="userDao" class="com.beans.UserDao"></bean>
<bean id="userService" class="com.beans.UserServcie" autowire="byName"></bean>

3、byType

使用autowire="byType"裝配方式時(shí),就是使用類型裝配,不需要顯式指定某個(gè)bean的引用,此時(shí)使用的是setter方式注入。此時(shí)需要注意ioc容器中不允許出現(xiàn)同一個(gè)類型的兩個(gè)及以上個(gè)數(shù)量的實(shí)例,否則失敗報(bào)異常。

此時(shí)的配置文件為

<bean id="userDao" class="com.beans.UserDao"></bean>
<bean id="userService" class="com.beans.UserServcie" autowire="byType"></bean>

4、constructor

使用autowire="constructor "裝配方式時(shí),默認(rèn)也是使用byType方式裝配,只是不同的是按照構(gòu)造器參數(shù)的類型進(jìn)行裝配,構(gòu)造器方式注入。

<bean id="userDao" class="com.beans.UserDao"></bean>
<bean id="userService" class="com.beans.UserServcie" autowire="constructor"></bean>

5、default

使用autowire="default"裝配方式時(shí),是使用父級標(biāo)簽的默認(rèn)裝配方式,我們這里也就是指<bean/>的父級標(biāo)簽<beans>的默認(rèn)裝配方式進(jìn)行裝配。例如:

<beans default-autowire="byType" 
       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 id="userDao" class="com.beans.UserDao"></bean>
    <bean id="userService1" class="com.beans.UserServcie" autowire="default"></bean> 
    <bean id="userService2" class="com.beans.UserServcie" autowire="byName"></bean>
</beans>

這里beans標(biāo)簽使用的是byType方式,對于userService1 使用的autowire="default",就會(huì)使用beans的byType方式裝配,而 userService1的autowire="byName"則會(huì)使用byName裝配。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java開發(fā)使用BigDecimal避坑四則

    java開發(fā)使用BigDecimal避坑四則

    這篇文章主要為大家介紹了java開發(fā)使用BigDecimal的避坑四則,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 如何在IDEA啟動(dòng)多個(gè)Spring Boot工程實(shí)例(圖文)

    如何在IDEA啟動(dòng)多個(gè)Spring Boot工程實(shí)例(圖文)

    這篇文章主要介紹了如何在IDEA啟動(dòng)多個(gè)Spring Boot工程實(shí)例(圖文),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 詳解Java中Iterable與Iterator用法

    詳解Java中Iterable與Iterator用法

    在本文中小編給大家分享了關(guān)于Java中Iterable與Iterator的用法知識點(diǎn)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2018-10-10
  • 使用SpringCache加Redis做緩存

    使用SpringCache加Redis做緩存

    這篇文章主要介紹了使用SpringCache加Redis做緩存方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java如何通過ssh遠(yuǎn)程連接主機(jī)并執(zhí)行命令

    Java如何通過ssh遠(yuǎn)程連接主機(jī)并執(zhí)行命令

    這篇文章主要介紹了Java如何通過ssh遠(yuǎn)程連接主機(jī)并執(zhí)行命令問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Mybatis-Plus使用p6spy對SQL性能進(jìn)行監(jiān)控的方法

    Mybatis-Plus使用p6spy對SQL性能進(jìn)行監(jiān)控的方法

    這篇文章主要介紹了Mybatis-Plus使用p6spy對SQL性能進(jìn)行監(jiān)控的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java實(shí)現(xiàn)抽獎(jiǎng)算法的示例代碼

    Java實(shí)現(xiàn)抽獎(jiǎng)算法的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)抽獎(jiǎng)算法,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下
    2022-04-04
  • IDEA自動(dòng)生成TestNG的testng.xml的插件方法

    IDEA自動(dòng)生成TestNG的testng.xml的插件方法

    這篇文章主要介紹了IDEA自動(dòng)生成TestNG的testng.xml的插件方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • SpringBoot中忽略實(shí)體類中的某個(gè)屬性不返回給前端的方法(示例詳解)

    SpringBoot中忽略實(shí)體類中的某個(gè)屬性不返回給前端的方法(示例詳解)

    本文介紹了在Spring Boot中使用Jackson和Fastjson忽略實(shí)體類屬性不返回給前端的方法,在Jackson中,同時(shí)使用@JsonProperty和@JsonIgnore時(shí),@JsonIgnore可能失效,Fastjson中可以使用@JSONField(serialize=false)來實(shí)現(xiàn),本文結(jié)合實(shí)例代碼介紹的非常詳細(xì),需要的朋友參考下吧
    2024-11-11
  • 詳解Spring Bean 之間的特殊關(guān)系

    詳解Spring Bean 之間的特殊關(guān)系

    在 Spring 容器中,兩個(gè) Bean 之間除了通過 <ref> 建立依賴關(guān)系外,還存在著一些特殊關(guān)系。這篇文章給大家想想介紹了Spring Bean 之間的特殊關(guān)系,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2018-05-05

最新評論

驻马店市| 淅川县| 米易县| 青阳县| 铜陵市| 台山市| 西盟| 永新县| 崇义县| 乡城县| 鹤壁市| 昌平区| 聂拉木县| 蓬莱市| 怀集县| 拉萨市| 施甸县| 衡阳县| 疏附县| 台中县| 奇台县| 兰州市| 正阳县| 邢台市| 镇康县| 闽清县| 定边县| 光山县| 上杭县| 香格里拉县| 黎平县| 柳江县| 中西区| 镇赉县| 弋阳县| 兴文县| 平乡县| 贺州市| 思茅市| 庆安县| 秦安县|