在我的web.xml文件中我有:Spring AOP - 如何使在父上下文中定義的方面在子上下文中工作?
<!-- Creates the Spring Container shared by all Servlets and Filters --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
的contextConfigLocation 類路徑:共享的context.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
包含一個標有@Component和 @Aspect的類。 此方面將消息記錄到我的審覈日誌。
當我在子上下文version-api-contexts/application-context[v1.0].xml
中定義的bean上調用一個方法時,該bean不會被spring AOP代理,並且該方面不會被調用。 如果我將方面定義行<context:component-scan base-package="com.company.cse.support.audit"/>
移動到子上下文XML,該方面工作正常。
我最終會有很多子上下文,我不希望將這一行放在每個子XML文件中。 有沒有辦法在父上下文中定義共同的方面一次,並讓他們在子上下文中工作?