복붙노트

[SPRING] JavaConfig로 Spring IoC를 사용하여 AspectJ aspect를 설정하고 싶습니까?

SPRING

JavaConfig로 Spring IoC를 사용하여 AspectJ aspect를 설정하고 싶습니까?

Spring IOC에 aspect를 설정하기 위해 Spring IoC를 사용하여 AspectJ aspect를 설정하는 Spring의 문서에 따르면, 다음을 xml 설정에 추가해야한다.

<bean id="profiler" class="com.xyz.profiler.Profiler"
      factory-method="aspectOf">
  <property name="profilingStrategy" ref="jamonProfilingStrategy"/>
</bean>

@SotiriosDelimanolis에서 제안한 것처럼 JavaConfig에서 다음을 다시 작성하면됩니다.

@Bean
public com.xyz.profiler.Profiler profiler() {
    com.xyz.profiler.Profiler profiler = com.xyz.profiler.Profiler.aspectOf();
    profiler.setProfilingStrategy(jamonProfilingStrategy()); // assuming you have a corresponding @Bean method for that bean
    return profiler;
}

그러나 프로파일 러 aspect가 네이티브 aspectj .aj 구문으로 작성된 경우에만 작동하는 것으로 보입니다. Java로 작성되고 @Aspect로 주석을 달면 다음과 같은 오류 메시지가 나타납니다.

@AspectJ 구문으로 작성된 측면에 대해 JavaConfig를 사용하여 이와 동일한 방법으로 작성할 수 있습니까?

해결법

  1. ==============================

    1.이 목적을 위해 특별히 제공되는 org.aspectj.lang.Aspects 클래스가 있음을 알 수 있습니다. aspectOf () 메서드가 LTW에 추가되어 XML 구성에서 제대로 작동하지만 컴파일 시간에는 작동하지 않는 것으로 나타납니다.

    이 목적을 위해 특별히 제공되는 org.aspectj.lang.Aspects 클래스가 있음을 알 수 있습니다. aspectOf () 메서드가 LTW에 추가되어 XML 구성에서 제대로 작동하지만 컴파일 시간에는 작동하지 않는 것으로 나타납니다.

    이 제한을 극복하기 위해 org.aspectj.lang.Aspects는 aspectOf () 메소드를 제공한다.

    @Bean
    public com.xyz.profiler.Profiler profiler() {
        com.xyz.profiler.Profiler profiler = Aspects.aspectOf(com.xyz.profiler.Profiler.class);
        profiler.setProfilingStrategy(jamonProfilingStrategy()); // assuming you have a corresponding @Bean method for that bean
        return profiler;
    }
    

    희망이 미래에 다른 사람을 도움이됩니다.

  2. ==============================

    2.거의 언제나.

    거의 언제나.

    @Bean
    public com.xyz.profiler.Profiler profiler() {
        com.xyz.profiler.Profiler profiler = com.xyz.profiler.Profiler.aspectOf();
        profiler.setProfilingStrategy(jamonProfilingStrategy()); // assuming you have a corresponding @Bean method for that bean
        return profiler;
    }
    

    팩토리 메서드는 정적 팩터 리 메서드를 사용한 인스턴스화의 설명서에 설명되어 있습니다.

  3. from https://stackoverflow.com/questions/22852657/configuring-aspectj-aspects-using-spring-ioc-with-javaconfig by cc-by-sa and MIT license