4

いくつかの 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 ログを表示し始めます。ただし、静的ヘルパー メソッドはまだ aspectj ログを表示しません。

質問、1.Spring で管理されていないクラス、つまり @Bean、@Autowired、@Component などを使用しないクラスのアスペクトアドバイスを構成するにはどうすればよいですか。 2.静的メソッドのアスペクトアドバイスを構成するにはどうすればよいですか3. 可能であれば、AspectJ の設定は Java ベースにする必要があります

詳細が必要な場合はお知らせください

4

1 に答える 1