springboot集成websocket通过自定义注解+切面实现实时消息提醒

        上一篇文章介绍springboot如何集成websocket,而我们的需求是当上一个人审核通过了下一个人能实时的收到提醒。所有还需要进一步的升级,实现思路:①在上一个人审核操作的方法上打上一个aop拦截的自定义注解②在aop中执行发送消息操作

1.自定义注解

/**
 * (描述该文件)
 * @author tlj
 * @date 2018年9月15日 上午10:37:31
 */
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface UserMessage {

}

2.aop类,UserMessageSocket 是上一篇文章中的服务器消息处理类

/**
 * (消息提醒的切面)
 * @author tlj
 * @date 2018年9月14日 上午10:41:31
 */
@Aspect
@Component
public class MessageAop {

    private Logger log = LoggerFactory.getLogger(this.getClass());
    @Autowired
    UserMessageSocket userMessageSocket;
	 
    /**
     * 切点
     */
	@Pointcut(value = "@annotation(com.dechy.mis.core.common.annotion.UserMessage)")
    public void cutService() {
    }

    /**
     * 通知
     * @param point
     * @return
     * @throws Throwable
     */
    @Around("cutService()")
    public Object getUserMessage(ProceedingJoinPoint point) throws Throwable {

        //1.先执行业务
        Object result = point.proceed();

        try {
            //2.执行aop方法
            handle(point);
        } catch (Exception e) {
           log.error("执行消息提醒切面异常");
        }

        return result;
    }

    private void handle(ProceedingJoinPoint point) throws Exception {

        //1.获取拦截的方法名
        Signature sig = point.getSignature();
        if (!(sig instanceof MethodSignature)) {
            throw new IllegalArgumentException("该注解只能用于方法");
        }
        //2.发送消息
        userMessageSocket.sendInfo();
        
    }
}

3.需要打注解的方法,那个方法会影响待办事项的个数,按个方法就打上注解就完事。

springboot集成websocket通过自定义注解+切面实现实时消息提醒_第1张图片

 

4.到此大功告成,感谢自己能够用文章记录自己的成长。

 

你可能感兴趣的:(springboot系列)