Spring AOP

1、面向切面编程  :是一种编程范式,不是编程语言 ;解决特定问题,不能解决所有问题;是oop的补充,不是替代
        
            面向过程编程 面向对象编程  函数式编程
            事件驱动编程 面向切面编程
            
        DRY :Don't Repeat Yourself    解决代码重复性的问题
        SOC: Separation of Concerns
        ----  水平分离:展示层--》服务层--》持久层
        ----  垂直分离:模块划分(订单、库存等)
        ----  切面分离:分离功能性需求与非功能性需求
        
        使用AOP的好处
        集中处理某一关注点/横切逻辑
        可以很方便地添加/删除关注点
        侵入性少,增强代码可读性及可维护性
        
        使用场景
            权限控制  缓存控制  事务控制  审计日志 性能监控  分布式追踪  异常处理
        
        AOP注解注解实现:
            @Aspect:切面 = 切点+通知(手动添加的代码,一般是方法);
            @Point:切点,横切关注点;
            @Before:添加的内容在切点之前执行;
            ------------------------------------
            @Autowired:自动装配,与Spring注入相关,可按类型、名装配;
            Spring注解@Component、@Controller、@Service、@Repository;
            
        使用@Aspect注解将一个java类定义为切面类
            使用@Pointcut定义一个切入点,可以是一个规则表达式,比如下例中某个package下的所有函数,也可以是一个注解等。
            根据需要在切入点不同位置的切入内容,5种类型的通知 
            使用@Before在切入点开始处切入内容
            使用@After在切入点结尾处切入内容
            使用@AfterReturning在切入点return内容之后切入内容(可以用来对处理返回值做一些加工处理)
            使用@Around在切入点前后切入内容,并自己控制何时执行切入点自身的内容
            使用@AfterThrowing用来处理当切入内容部分抛出异常之后的处理逻辑
            
            
        Spring AOP  
        1、XML配置
        2、注解方式
            AspectJ注解
                @Aspect
                @Pointcut
                Advice
            
        Pointcut :切面表达式
            designators:指示器,描述通过什么方式去匹配Java的那些方法
                execution():匹配方法
                匹配注解
                @target()
                @args()
                @within()
                @annotation()
                within():匹配包/类型
                this()/bean()/target():匹配对象
                args():匹配参数
                
            wildcards:通配符(*:匹配任意数量的字符;+匹配指定类及其子类;..:一般用于匹配任意数的子包或参数)
            operators: 运算符(&&:与操作符;||或;!:非)
            
            匹配包/类型 (within())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值