亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

本文介紹了Spring AOP–如何使父上下文中定義的方面在子上下文中工作?的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問題描述

在我的web.xml文件中:

<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

上下文配置位置
類路徑:Shared-Conext.xml

<!--  Main general mapping, i.e. context for the UI & version queries -->
<servlet>
    <servlet-name>mainDispacherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>classpath:web-application-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>mainDispacherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<!-- Processes application requests for version 1 -->
<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:version-api-contexts/application-context[v1.0].xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/api/v1.0/*</url-pattern>
</servlet-mapping>

在父上下文shared-context.xml中,我有:

 <aop:aspectj-autoproxy/>

 <context:component-scan base-package="com.company.cse.support.audit"/>

com.company.cse.support.audit包含一個(gè)標(biāo)記為@Component的類,并且
@Aspect。
此方面會(huì)在我的審核日志中記錄一條消息。

當(dāng)我調(diào)用子上下文version-api-contexts/application-context[v1.0].xml中定義的Bean上的方法時(shí),該Bean不會(huì)被Spring AOP代理,方面也不會(huì)被調(diào)用。
如果我移動(dòng)特征定義行<context:component-scan base-package="com.company.cse.support.audit"/>
對(duì)子上下文XML來(lái)說(shuō),方面工作得很好。

我最終將擁有許多子上下文,我不希望在每個(gè)子XML文件中都放入該行。
有沒有辦法在父上下文中定義公共方面,并使它們?cè)谧由舷挛闹泄ぷ鳎?/p>

推薦答案

Spring AOP代理的創(chuàng)建發(fā)生在通過(guò)Bean后處理器加載上下文的時(shí)候。由于只有在加載父上下文之后才加載子上下文,因此父上下文中定義的Bean后處理器不可能影響子上下文中的Bean。

如果希望代理子上下文中的Bean,則必須確保兩件事:

    子上下文可以訪問方面Bean(將它們放在父上下文中是可以的)
    上下文中包含執(zhí)行代理本身的Bean后處理器

對(duì)于#2,您需要在每個(gè)子上下文定義中使用<aop:aspectj-autoproxy/>。如果希望避免重復(fù),請(qǐng)嘗試將所有子上下文共有的部分提取到單獨(dú)的XML文件中,然后可以將該文件導(dǎo)入到每個(gè)子上下文中。

這篇關(guān)于Spring AOP–如何使父上下文中定義的方面在子上下文中工作?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,

分享到:
標(biāo)簽:AOP Spring 定義 工作 文中
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定