Struts 1和Spring AOP

时间:2018-02-22 17:10:30

标签: java spring aspectj spring-aop struts-1

我有一个使用Struts 1创建的应用程序,它需要一些听觉,所以我想要的是使用方面,所以我不需要更改类,而是“拦截”对方法的调用。

我正在尝试使用Spring AOP + Aspectj集成,但首先我需要集成Struts和Spring。我一直在尝试使用几个教程和类似的问题,但显然它们主要用于Struts 2。

更具体地说,我这样做:

的web.xml

0.x.x

的applicationContext.xml

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

LoggerAspect.java

<context:component-scan base-package="com.app"/>
<context:annotation-config/>
<aop:aspectj-autoproxy />

<bean id="loggerAspect" class="com.app.util.LoggerAspect"/>

的pom.xml

@Aspect
public class LoggerAspect {

    @Before("execution(* com.app.action.FileAction.list(..))")
    public void test(JoinPoint joinPoint) {
        System.out.println("Calling: " + joinPoint.getTarget().getClass().getName() + "." + joinPoint.getSignature().getName());
    }
}

我没有对 struts-config.xml 文件做任何事情。服务器加载应用程序没有任何问题,但Spring没有加载,所以方面。

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

如果您想将AOP应用于传统的非Spring应用程序,那么您不会因为Spring AOP而引入Spring。您可以直接使用AspectJ,并在此处有几个选项:

  • 如果您控制原始应用程序的构建,则编译原始应用程序与AspectJ编译器,如果您不控制:
  • 编译后编译时间二进制编织会创建原始类文件的AOP增强副本。重新打包并使用它们而不是无纺布原件。
  • 加载时编织:Java代理在类加载期间进行编织。

AspectJ比Spring AOP更强大,更快(没有代理)并且完全独立于Spring。这就是你想要使用的。