我有一个带有一些 REST 控制器、服务类和助手类的 Spring Boot 应用程序。控制器和服务类是 spring 管理的,而 helper 类不是 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() {
}
}
- 调用控制器时,启用 Aspect 的日志记录适用于控制器和服务功能,但不适用于辅助功能。
- 如果我们在控制器中自动装配辅助类,非静态辅助方法开始显示 aspectj 日志。但是,静态辅助方法仍然不显示 aspectj 日志
问题,1. 我们如何为非弹簧管理的类配置 aspectj 建议,即没有 @Bean、@Autowired、@Component 等。2. 我们如何为静态方法配置 aspectj 建议(我正在使用 @EnableLoadTimeWeaving 但也许我我错过了什么) 3. 如果可能的话,AspectJ 配置应该是基于 java 的
如果需要更多详细信息,请告诉我