Java SpringAOP在Tomcat和tcserver中不起作用
当我从单元测试或通过独立应用程序运行它时,我有一个方面可以很好地工作。但是,当我将其作为web应用程序的一部分运行并将其托管在Tomcat上时,不会应用方面 我的外貌看起来像Java SpringAOP在Tomcat和tcserver中不起作用,java,spring,aop,aspectj,spring-aop,Java,Spring,Aop,Aspectj,Spring Aop,当我从单元测试或通过独立应用程序运行它时,我有一个方面可以很好地工作。但是,当我将其作为web应用程序的一部分运行并将其托管在Tomcat上时,不会应用方面 我的外貌看起来像 public class MyAspect { @Around("within(com.service..*)") public Object doLogging(ProceedingJoinPoint pjp) throws Throwable { //do something
public class MyAspect {
@Around("within(com.service..*)")
public Object doLogging(ProceedingJoinPoint pjp) throws Throwable {
//do something
Object obj = pjp.proceed();
//do something else
return obj;
}
}
更新:我将把它留在这里,因为它仍然部分有效,即使它对您的情况没有帮助。我将编辑一些地方,编辑标记为这样或这样 如果您使用的是SpringAOP,它将无法工作。SpringAOP只完全支持
执行
切入点。中的切入点仅在应用于方法执行时有效,因为中的的全部功能需要AspectJ(Spring AOP只使用一些AspectJ切入点,而不使用AspectJ weaver)。通过静态编译(通常通过或)或通过
另外,您的类缺少一个@Aspect
注释。我能够解决这个问题。原因是方面是由web应用程序上下文而不是全局应用程序上下文处理的,所以我必须重新构造一些东西。我已经详细说明了步骤
@seanizer弹簧在内部提供支撑。确实,它只应用于方法,并且在其中将应用于com.service的所有包和子包的方法。有关详细信息,请查看参考文档移动怎么样
<context:component-scan base-package="com.*" />
<mvc:annotation-driven/>
<aop:aspectj-autoproxy />
要servlet mvc.xml?我在tcserver(位于tomcat之上的Spring服务器)中看到了相同的行为。Jboss也不起作用。在Pointcut中,Spring起作用。当我使用Spring AOP only在一个独立应用程序中运行它时,上面的特性运行得很好Spring AOP只支持Spring beans的方法执行连接点来源:您可能在IDE中启用了AspectJ编织,所以您认为您使用的是Spring AOP,而实际上您正在使用AspectJ。我的IDE没有启用AspectJ编织。当我直接在tomcat服务器中部署war并从命令行工具运行服务器(因此没有涉及ide)时,我也看到了同样的问题。正如我所写的:Spring AOP不支持war,也不支持war,因为Spring AOP根据默认值基于JDK代理,而它们反过来又基于方法拦截。如果您需要更多,请使用AspectJ(这正是Spring AOP文档所建议的)。是的,我承认,
中的部分受支持(当它应用于方法执行时)+很遗憾,您的链接已从web上消失。链接内容的核心应该包含在答案中。这并不能提供问题的答案。一旦你有足够的钱,你将能够;相反