利用Spring AOP機制攔截方法一例


直接上代碼:

@Aspect    // for aop
@Component // for auto scan
@Order(0)  // execute before @Transactional
public class MessageInterceptor {
    

    @Autowired
    private UserService        userService;
    
    private static Logger logger = LoggerFactory.getLogger(MessageInterceptor.class);
    
      @Pointcut("execution(public * com.xxx.wx.mapper.MymessageMapper.insert(..))")
    public void messageInsertAspect(){
          
      }
    
    //@Before("messageInsertAspect()")
    @After("messageInsertAspect()")
    public void messageInsert(JoinPoint joinPoint) {
        if(joinPoint.getArgs() != null){
            Mymessage message = (Mymessage) joinPoint.getArgs()[0];
            logger.debug(JSON.toJSONString(message));

           // .....

try { sendMyMessageNotice(token, message); // 發送審核通過消息 } catch (IOException e) { e.printStackTrace(); logger.debug(e.toString()); } } }

攔截方法:com.xxxx.wx.mapper.MymessageMapper.insert(Mymessage message)

插入消息記錄之后,馬上推送消息。

配置:

spring配置文件中加入掃描:

<context:component-scan base-package="com.xxxx.wx.service, com.xxxx.wx.aop" />

 

com.xxxx.wx.aop 這個是MessageInterceptor 所在的包。

So easy, and so powerfull.

 

注:還有一個問題沒有考慮,如果插入數據到數據中時失敗了,攔截器會怎么樣呢?是否會推送消息呢?后面再來考慮和完善。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM