是否可以將Spring AOP應用於在與AOP配置不同的應用程序上下文中聲明的bean?我有2個應用程序上下文: dataApplicationContext.xml和webApplicationContext.xml。我想在webApplicationContext.xml聲明一個方面攔截在定義dataApplicationContext.xml將Spring AOP應用於來自不同應用上下文的bean
dataApplicationContext.xml被包括在主的applicationContext.xml上下文文件豆的方法執行它從main(String args[])
入口點引導。 webApplicationContext.xml由部署在Jetty嵌入式實例中的ContextLoaderListener
獨立加載。
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml"});
ctx.registerShutdownHook();
Server server = ctx.getBean(Server.class);
DispatcherServlet dispatcherServlet = new DispatcherServlet();
dispatcherServlet.setContextConfigLocation("classpath:webApplicationContext.xml");
ServletHolder servletHolder = new ServletHolder(dispatcherServlet);
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
context.addEventListener(new ContextLoaderListener());
context.setInitParameter("contextConfigLocation",
"classpath*:**/webApplicationContext.xml");
context.addServlet(servletHolder, "/*");
context.setSessionHandler(new SessionHandler());
謝謝。
我看到了編輯,並有一個問題,在你的問題中,你提到了webappContext。xml使用ContextLoaderListener加載,但在代碼中,它是從Dispatcher Servlet加載的。此外,它基本上表示相同,那麼您的web應用程序上下文將是調度程序servlet的上下文,applicationContext.xml將是根上下文。對? – Hrishikesh
是的,情況完全相同。例如,我嘗試了它,並且在webApplicationContext.xml中聲明方面時,根本沒有方法攔截。 – Nedo