У меня есть приложение весенней загрузки с некоторыми контроллерами REST, классами обслуживания и вспомогательными классами. Контроллеры и сервисные классы управляются пружиной, а вспомогательные классы не управляются пружиной и в основном содержат статические методы.
Конфигурация 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() {
}
}
- При вызове контроллера ведение журнала с включенным аспектом работает для контроллера и сервисных функций, но не для вспомогательных функций.
- Если мы автоматически подключаем вспомогательный класс в контроллере, нестатические вспомогательные методы начинают показывать журналы aspectj. Однако статические вспомогательные методы по-прежнему не отображают журналы аспектов.
Вопросы: 1. Как настроить рекомендации по аспектам для классов, которые не управляются Spring, т. е. без @Bean, @Autowired, @Component и т. д. 2. Как настроить рекомендации по аспектам для статических методов (я использую @EnableLoadTimeWeaving, но, возможно, я что-то упускаю) 3. Конфигурация AspectJ должна быть основана на Java, если это возможно
Пожалуйста, дайте мне знать, если требуется дополнительная информация