2012-11-29 138 views
-2

如何在java中配置基於註釋的彈簧方面?如何在java中配置基於註釋的彈簧方面

假設我們想攔截一個彈簧服務,我們通常通過AOP切入點表達來實現。這個例子詳細說明了如何使用註解來代替表達式。這在我們使用註釋時更加便於攜帶。

有很多例子,但很少有正確的內容。因此把它放在這裏...

這是一個解決的問題。我在春天張貼我的答案,因此幫助別人包括我自己在內。基於

+0

更新與筆記的問題,它有助於澄清? – MountainRock

+0

你也應該接受你的答案,以便其他人可以看到它。 – kazanaki

回答

0

註釋AOP通知

1.定義註釋

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註釋需要被截獲

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