您的位置:首页 > 编程语言 > Java开发

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

2016-09-23 17:04 246 查看
直接上代码:

@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.

注:还有一个问题没有考虑,如果插入数据到数据中时失败了,拦截器会怎么样呢?是否会推送消息呢?后面再来考虑和完善。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: