直接上代碼: 攔截方法:com.diantusoft.wx.mapper.MymessageMapper.insert(Mymessage message) 插入消息記錄之後,馬上推送消息。 配置: spring配置文件中加入掃描: <context:component-scan base-pack ...
直接上代碼:
@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.
註:還有一個問題沒有考慮,如果插入數據到數據中時失敗了,攔截器會怎麼樣呢?是否會推送消息呢?後面再來考慮和完善。