zoukankan      html  css  js  c++  java
  • Spring AOP编程经验总结

    编程范式概览:面向过程,面向对象,函数式编程,事件驱动编程,面向切面等,

    AOP是什么?

      Spring AOP是采用面向切面编程的编程范式,而非编程语言,它只能解决特定问题,而非所有问题,它与OOP不是替代关系,而是补充。

    AOP的初衷:

      DRY  Don't Repeat Yourself

      SoC Separation of Concerns 

    AOP的好处 :

      集中处理某一关注点/横切逻辑,可以很方便的添加和删除关键点,侵入性少,可以增强代码可读性和可维护性。

    AOP的应用场景:

      权限控制,缓存控制,事务控制,审计日志,性能监控,分布式追踪,异常处理。

    Pointcut Expression

      1、designators 

        匹配方法:execution()

        匹配注解:@target @args @within @annoation @

        匹配包/类型 @within

        匹配对象 this() bean() target()

        匹配参数 args()

      2、wildcards :  *   +   ..

      3、operators :&& || !

    织入的时机:

      代理选择:如果目标对象实现了接口,则默认采用JDK动态代理,如果目标对象没有实现接口,则cglib进行动态代理,如果目标对象实现了接口,但强制使用cglib代理,则使用cglib代理。

    开启强制使用cglib动态代理的方法:在模块启动类加@EnableAspectJAutoProxy(proxyTargetClass=true)

    Aop如何实现功能叠加:采用责任链模式

    注意事项:

      1、不宜把重要的业务逻辑放到aop中

      2、无法拦截static final  private方法

      3、无法拦截内部方法调用:原因是内部调用的对象是this,而非Spring容器代理的对象,解决方法有两个:1、ApplicationContextHolder获得bean,然后调用 2、用新的类去调用,不用内部调用。

  • 相关阅读:
    《2048》开发5——实现计分功能
    《2048》开发4——继续编辑GameView类,实现游戏逻辑
    《2048》开发3——编辑Card类
    robotframework(rf)中对时间操作的datetime库常用关键字
    弹框和单选框,复选框
    Selenium IDE安装与使用
    全面的功能测试点总结
    RF新手常见问题总结--(基础篇)
    常用断言关键字(rf中)
    jmeter录制(ios)app脚本
  • 原文地址:https://www.cnblogs.com/niuyg928/p/11404342.html
Copyright © 2011-2022 走看看