利用Spring AOP机制拦截方法一例

直接上代码:spring

@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)app

插入消息记录以后,立刻推送消息。spa

配置:debug

spring配置文件中加入扫描:code

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

 

com.xxxx.wx.aop 这个是MessageInterceptor 所在的包。blog

So easy, and so powerfull.token

 

注:还有一个问题没有考虑,若是插入数据到数据中时失败了,拦截器会怎么样呢?是否会推送消息呢?后面再来考虑和完善。get

相关文章
相关标签/搜索