2012-11-29 5 views
-2

자바에서 애노테이션 기반 스프링 애스펙트를 어떻게 구성합니까?자바에서 애노테이션 기반 스프링 애스펙트를 어떻게 구성합니까?

우리는 스프링 서비스를 가로 채기를 원한다고 말하지만, 보통 AOP 포인트 컷 식으로 처리합니다. 이 예제에서는 표현식 대신 주석을 사용하여 수행하는 방법에 대해 자세히 설명합니다. 이것은 우리가 주석을 사용할 때 더 이식성이있다.

많은 예가 있지만 적절한 콘텐츠가 거의 없습니다. 그러므로 여기에 넣으십시오 ...

이것은 해결 된 질문입니다. 그것은 자신을 포함하여 다른 사람을 도움이 그래서 봄에 ..

+0

질문을 메모로 업데이트했습니다. 명확하게 설명하는 데 도움이됩니까? – MountainRock

+0

다른 사람들이 볼 수 있도록 답을 받아 들여야합니다. – kazanaki

답변

0

주석 기반의 AOP 조언을 내 대답을 게시하고

1.define

전에 완료되지 않은 경우
public @interface ApplyAuthorisationAdvice { 
} 

스프링 설정 파일에 <aop:aspectj-autoproxy />을 설정

주석

2.

import org.aopalliance.aop.Advice; 
import org.aspectj.lang.annotation.Aspect; 

@Aspect 
@Component 
public class AuthorisationAspect implements Advice { 

    private final static Logger logger = Logger.getLogger(AuthorisationAspect.class); 

    @Autowired 
    MyService myService; 

    @SuppressWarnings("unchecked") 
    @AfterReturning(pointcut = "@annotation(com.example.ApplyAuthorisationAdvice)", returning = "result") 
    public void afterReturning(JoinPoint joinPoint, Object result) { 

     if (result != null && (result instanceof List)) { 
      // filter stuff 
     } 

    } 
} 

3.A 도청해야 할 서비스에 대한 pply annotation

@Component("myService") 
public class MyServiceImpl implements MyService { 
    @ApplyAuthorisationAdvice 
    public List<MySummary> search(MyContext searchContext) { 
    } 
}