aop控制事件触发

JavaEE.jpg

好久没有更新,今天来讲一下在公司看到的技术
如何利用springAOP思想,在执行某个方法之后执行其他的操作

什么是spring aop思想

首先说一下,我在这里是不会深入讲解spring aop的设计思想的,就几句话带过了
如果想了解spring AOP的思想,请移步到<a href="http://blog.csdn.net/luanlouis/article/details/51095702">springAOP 设计模式</a>

springAOP核心是动态代理,原理网上有,我太懒了不想回头看了,就说一下我知道的给大家听一下,如果有错误,欢迎大家指正


1.SpringAOP抽取公共代码块

SpringAOP的设计思想其实跟 最初学习编程的时候,刚开始学习 ‘工具类’,‘接口’时接触到的想法类似,
工具类 --> 共用的,高效的(一处编码,多处受益)
接口 --> 模板,规范(规定要做什么)

工具类-->我们将一些重复使用的,多处地方调用的代码块抽取出来,放到一个方法里面
当我们用到这些代码的时候,就调用该方法,不必重复造轮子

2.springAOP---切西瓜
比如说,一本书,书里面有书页,有书签对吧。
那如果我这样子比喻,Java-->📚,书页-->方法,springAOP-->书签
    看出什么了?
    1.每页上面是不是都可以插入书签
    2.书签是不是可以在每页插入多个
    3.一页是不是可以被两个书签插入

学springAOP 就要会切入点,切入时机,切入后的处理---->自行百度

@SpringAOP 自动执行指定方法简例 --> 账户注册之后自动输出 helloWorld

像我这么懒的人,还在加班,所以例子也是公司的演变过来了

//controller 入口
@RestController
@RequestMapping("/ticket")
public class TicketController {
    @Resource
    private ITicketService ticketService;

    @RequestMapping(method = RequestMethod.POST)
    public Message<Ticket> createTicket(String fromUserId, Ticket ticket, int action) {
        return ticketService.createTicket(fromUserId, ticket, action);
    }
}
@Component
@Aspect
@org.springframework.core.annotation.Order(1)
public class TicketAspect {
    @Resource
    private ITicketService ticketService;

    @Pointcut("execution (* cn.umiit.epb.service.impl.UserService.create(..))")
    public void registryAspect() {
    }

    @AfterReturning(pointcut = "registryAspect()", returning = "message")
    public void afterRegistry(JoinPoint joinPoint, Message<User> message) {
      System.out.println("helloWorld"); 
    }
公司喜欢用标签,不用代码的形式,如果想知道代码怎么实现下面标签的功能可以去百度
@Resource  跟 @@Autowired类似,有区别        交给spring创建bean对象的
@RestController  MVC  思想 ,controller层入口标签
@RequestMapping("/ticket")   url地址  
@org.springframework.core.annotation.Order(1)  创建 bean 顺序
@Aspect   切面
@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)
``

   
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容