2013-03-21 3 views
0

나는 완전히없는 XML의 봄 설정을 사용하고, 나는 성공적으로 내 @Configuration 클래스와 @EnableAspectJAutoProxy을 이용하고 있고 @Aspect@Component의 조합으로 내 측면 클래스의 검색을 발견했다."수동"직물은 측면

하지만 스프링 컨텍스트로 만들지 않은 인스턴스를 주문형으로 만들거나 강화할 필요가있는 지점에 왔지만 찾을 수있는 방법은 ProxyFactory으로 수행하는 것입니다. 하지만 ProxyFactory.addAdvice(..)으로 조언을 수동으로 추가해야합니다. 예를 들어 @Before과 같이 한 번 작성했습니다.

다시 작성하고 싶지 않습니다.

@EnableAspectJAutoProxy 주석을 사용하여 내부적으로 만든 팩토리에 대한 참조를 얻을 수있는 방법이 있습니까? 내가 좋아하는 뭔가를 할 수 있도록 : 나는 '주변을 둘러 볼 수 있지만 시도했다

// Also a made up class, of course. 
ApplicationContextAwareProxyFactory f = new ApplicationContextAwareProxyFactory(applicationContext); 
Object bean = f.weave(obj); 

:

@Autowired 
private AspectJAutoProxyInstanceFactory f; // made up class, of course 
[...] 
Object bean = f.weave(obj); 

또는 공장의 인스턴스를 그 조언이 내 응용 프로그램에서이 이미 무엇인지 알아낼 수 답을 찾는 것처럼 보입니다. 어쩌면 나는보기에 충분하지 않을 수도 있습니다. 미리 감사드립니다. 저를 도울 수 있다면!

답변

2

나는 올바른 질문을 이해하기를 바랍니다.

스프링을 사용하지 않고 컴파일 시간 짜기를 사용할 수 있습니다. Spring의 프록시 기반 접근 방식은 훨씬 강력하고 AspectJ에서 @Aspect 주석을 이미 빌려 왔기 때문에 aspect를 변경할 필요가 없다.

쉽게 받는다는와 그것을 달성 할 수 있으며, 여기에

aspectj-maven-plugin은 구성의 예입니다 : 당신이 타사 항아리에 코드를 짜하려면

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>aspectj-maven-plugin</artifactId> 
     <version>1.4</version> 
     <executions> 
      <execution> 
      <goals> 
       <goal>compile</goal>  <!-- use this goal to weave all your main classes --> 
       <goal>test-compile</goal> <!-- use this goal to weave all your test classes --> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 

그런를 구성 :

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>aspectj-maven-plugin</artifactId> 
     <version>1.4</version> 
     <configuration> 
      <weaveDependencies> 
      <weaveDependency> 
       <groupId>org.agroup</groupId> 
       <artifactId>to-weave</artifactId> 
      </weaveDependency> 
      <weaveDependency> 
       <groupId>org.anothergroup</groupId> 
       <artifactId>gen</artifactId> 
      </weaveDependency> 
      </weaveDependencies> 
     </configuration> 
     <executions> 
      <execution> 
      <goals> 
       <goal>compile</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin>