在弹簧应用程序中加载非弹簧豆的编织时间



我有一个带有REST控制器,服务类和辅助类的Spring Boot应用程序。控制器和服务类是弹簧管理的,而助手类不受弹簧管理,并且主要包含静态方法。

java配置中存在该方面的配置,如下所示

@Configuration
@EnableLoadTimeWeaving(aspectjWeaving = AspectJWeaving.ENABLED)
public class AspectConfig {
    @Bean
    public LoggingAspect loggingAspect() {
        return new 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() {
    }
}
  • 当调用控制器时,启用了启用的日志记录适用于控制器和服务功能,但对辅助功能不适用。
  • 如果我们在控制器中自动自动启动助手类,则非静态助手方法开始显示exchapj logs。但是,静态辅助方法仍然没有显示expactj logs

问题,1.我们如何为不受弹簧管理的类配置AxpectJ建议,即没有@Bean,@Autowired,@component等。2.我们如何为静态方法配置AxpectJ建议(我正在使用@enableloadtime编织,但也许我缺少一些东西)3.如果可能的如果可能

请让我知道是否需要更多详细信息

使用 -javaagent:/path/to/aspectjweaver-<version>.jar作为对JVM的启动参数来启用加载时间编织。从您的弹簧配置中删除@EnableAspectJAutoProxy,以便Spring不会尝试使用其自己的Spring AOP框架,而不是Pure appectj。可选,创建META-INF/aop.xml。如果要将春季配置应用于spring(@Configurable POJOS)的bean,请添加@EnableSpringConfigured

最新更新