我有一个带有一些REST控制器,服务类和帮助程序类的spring启动应用程序。控制器和服务类是弹簧管理的,而辅助类不是弹簧管理的,主要包含静态方法。
AspectJ配置在java配置中出现如下
@Configuration
@EnableLoadTimeWeaving(aspectjWeaving = AspectJWeaving.ENABLED)
public class AspectConfig {
@Bean
public LoggingAspect loggingAspect() {
return new LoggingAspect();
}
}
相应的LoggingAspect类如下,
@Aspect
public class LoggingAspect {
@Before("allMethodsPointcut()")
public void logBeforeMethod(JoinPoint joinPoint) {
System.out.println("Entering Method - " + joinPoint.getSignature().getDeclaringType() + "::" + joinPoint.getSignature().getName());
}
@After("allMethodsPointcut()")
public void logAfterMethod(JoinPoint joinPoint) {
System.out.println("Exiting Method - " + joinPoint.getSignature().getDeclaringType() + "::" + joinPoint.getSignature().getName());
}
@Pointcut("execution(* com.test.controller..*(..)) || execution(* com.test.service..*(..)) || execution(* com.test.helper..*(..))")
public void allMethodsPointcut() {
}
}
问题, 1.我们如何为不是Spring管理的类配置aspectj建议,即没有@Bean,@ Autowired,@ Component等。 2.我们如何为静态方法配置aspectj建议(我正在使用@EnableLoadTimeWeaving但是我可能缺少一些东西) 3.如果可能,AspectJ配置应该基于java
如果需要更多详细信息,请告诉我
答案 0 :(得分:3)
使用-javaagent:/path/to/aspectjweaver-<version>.jar
作为JVM的启动参数以启用加载时编织。从弹簧配置中删除@EnableAspectJAutoProxy
,以便spring不会尝试使用它自己的Spring AOP框架而不是纯粹的AspectJ。 (可选)创建META-INF/aop.xml
。如果要将spring配置应用于不受spring(@EnableSpringConfigured
POJO)管理的bean,请添加@Configurable
。