欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring的父子容器及配置詳解

 更新時(shí)間:2018年01月05日 09:34:16   作者:張一一  
本篇文章主要介紹了spring的父子容器及配置詳解,詳細(xì)的介紹了spring父子容器的概念、使用場景和用法,有興趣的可以了解一下

spring父子容器

spring總的上下文容器有父子之分,父容器和子容器。 ** 父容器對子容器可見,子容器對父容器不可見 **

對于傳統(tǒng)的spring mvc來說,spring mvc容器為子容器,也就是說ServletDispatcher對應(yīng)的容器為子容器,而web.xml中通過ConextLoaderListener的contextConfigLocation屬性配置的為父容器。

父子容器的使用場景

父子容器的主要用途是上下文隔離??紤]以下一種場景。

  1. project-service.jar為服務(wù)層模塊。包含一些數(shù)據(jù)庫service方法。其對應(yīng)的spring配置文件為project-service.xml。
  2. project-api為api服務(wù)器代碼。它依賴于project-service.jar。其對應(yīng)的配置文件為project-api.xml。

project-api需要對project-service里的某些方法進(jìn)行decorate,進(jìn)行裝飾,比如給CustomerService進(jìn)行裝飾。裝飾后的類為CachedCustomerService。于是,現(xiàn)在project-api里面包含兩個(gè)CustomerService,一個(gè)是來自project-service的CustomerService,另一個(gè)是CachedCustomerService。這個(gè)時(shí)候,如果project-api工程所有的配置文件都通過一個(gè)上下文進(jìn)行加載,勢必出現(xiàn)問題(通常的做法是用import標(biāo)簽全部給import進(jìn)來)。因?yàn)?,project里的PayService里通過@Resource標(biāo)準(zhǔn)注入了CustomerService,類似如下

@Serivce
public class PayService{
@Resource
private CustomerService cusService;
}

解決方式

這時(shí),由于上下文在注入customerService屬性的時(shí)候,遇到了兩個(gè)CustomService。它無法判讀注入哪個(gè)Service。

當(dāng)然了,有人會(huì)說,改一下PayService的Resource屬性,指定下具體注入哪個(gè)。但是,project-service.jar是第三方庫的話,改動(dòng)代碼變得不可行,除非拿到源碼。

這個(gè)時(shí)候,就可以通過父子容器的方式解決這個(gè)問題。

將project-service放在父容器中,project-api所有的bean用子容器加載。

假設(shè)project-api的上下文配置文件為project-api.xml,實(shí)現(xiàn)方法如下。

1、定義project-total.xml

 <bean id = "serviceContext" class="org.springframework.context.support.ClassPathXmlApplicationContext">
  <constructor-arg>
  <value>
   classpath:project-service.xml
  </value>
  </constructor-arg>
 </bean>

 <bean id = "apiContext" class="org.springframework.context.support.ClassPathXmlApplicationContext">
  <constructor-arg>
   <value>
    classpath:project-api.xml
   </value>
  </constructor-arg>

  <constructor-arg>
   <ref bean="serviceContext"/>
  </constructor-arg>
 </bean>

2、在web.xml的上下文配置中如下。

 <context-param> 
  <param-name>contextConfigLocation</param-name>
  <param-value> classpath*:project-total.xml</param-value> 
 </context-param>

 <listener> 
  <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
  </listener>

 <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>

serviceContext為父容器,apiContext為子容器,從而實(shí)現(xiàn)serviceContext看不到apiContext,而apiContext可以看見serviceContext的效果。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文讀懂a(chǎn)va中的Volatile關(guān)鍵字使用

    一文讀懂a(chǎn)va中的Volatile關(guān)鍵字使用

    volatile關(guān)鍵字的作用保證了變量的可見性(visibility)。被volatile關(guān)鍵字修飾的變量,如果值發(fā)生了變更,其他線程立馬可見,避免出現(xiàn)臟讀的現(xiàn)象。這篇文章主要介紹了ava中的Volatile關(guān)鍵字使用,需要的朋友可以參考下
    2020-03-03
  • 解決引用jip-common jar包,報(bào)401 Unauthorized錯(cuò)誤問題

    解決引用jip-common jar包,報(bào)401 Unauthorized錯(cuò)誤問題

    這篇文章主要介紹了解決引用jip-common jar包,報(bào)401 Unauthorized錯(cuò)誤問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • MyBatis多表連接查詢的實(shí)例教程

    MyBatis多表連接查詢的實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于MyBatis多表連接查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 通過實(shí)例學(xué)習(xí)JAVA對象轉(zhuǎn)成XML輸出

    通過實(shí)例學(xué)習(xí)JAVA對象轉(zhuǎn)成XML輸出

    這篇文章主要介紹了通過實(shí)例學(xué)習(xí)JAVA對象轉(zhuǎn)成XML輸出,做流程圖的項(xiàng)目時(shí),新的流程定義為xml的,需要對xml與java對象進(jìn)行互轉(zhuǎn),下面我們來深入學(xué)習(xí),需要的朋友可以參考下
    2019-06-06
  • spring boot整合netty的實(shí)現(xiàn)方法

    spring boot整合netty的實(shí)現(xiàn)方法

    這篇文章主要介紹了spring boot整合netty的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 線程池中使用spring aop事務(wù)增強(qiáng)

    線程池中使用spring aop事務(wù)增強(qiáng)

    這篇文章主要介紹了線程池中使用spring aop事務(wù)增強(qiáng),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java中對象的序列化詳解及實(shí)例

    Java中對象的序列化詳解及實(shí)例

    這篇文章主要介紹了 Java中對象的序列化詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 學(xué)習(xí)Java內(nèi)存模型JMM心得

    學(xué)習(xí)Java內(nèi)存模型JMM心得

    這篇文章主要介紹了學(xué)習(xí)Java內(nèi)存模型JMM的心得以及對其原理做了深入的介紹,有興趣的朋友學(xué)習(xí)下吧。
    2017-12-12
  • 在JDK和Eclipse下如何編寫和運(yùn)行Java Applet

    在JDK和Eclipse下如何編寫和運(yùn)行Java Applet

    本文主要介紹了在JDK和Eclipse的環(huán)境下如何編寫和運(yùn)行Java Applet,圖文方式,適合初學(xué)者學(xué)習(xí)。
    2015-09-09
  • 討論分析JDK17是否會(huì)代替JDK8

    討論分析JDK17是否會(huì)代替JDK8

    這篇文章主要為大家介紹了JDK17是否會(huì)代替JDK8的問題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03

最新評論