![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
AOP
Sadlay
Never Give Up
展开
-
Spring AOP(一)知识点及思维导图
Spring AOP(一)思维导图Spring Aop思维导图Spring Aop目录Spring AOP(一)思维导图Spring AOP(二)约定编程Spring AOP(三)AOP概念Spring AOP(四)AOP的引入Spring AOP(五)AOP通知获取参数Spring AOP(六)AOP代理jdk和cglibSpring AOP(七)AOP多切面...原创 2018-10-25 13:04:49 · 4141 阅读 · 2 评论 -
Spring AOP (二)约定编程
约定编程为了更好地理解Spring的AOP,我们先了解下什么是约定编程。##概念约定编程就是将内容织入到约定的流程中。对于约定编程,首先你需要记住得是约定的流程是什么,然乎就可以完成对应的任务,却不需要知道底层设计者是怎么将约定的内容织入到对应的流程中的。为了理解,我们开始举一个简单的约定编程例子。##服务方法我们先定义一个简易的接口接口HelloServicepackage c...原创 2018-10-25 13:11:15 · 1839 阅读 · 1 评论 -
Spring AOP(四)AOP开发详解
AOP开发详解这里我们主要采用@AspectJ的注解方式讨论AOP的开发,因为Spring AOP只能对方法进行拦截,所以I首先要确定需要拦截什么方法,让它能织入约定的流程中。确定连接点任何AOP编程,首先确定的是在什么地方需要AOP,也就是需要确定连接点(什么类的什么方法)的问题。现在我们假设有一个UserService接口,它有一个printUser方法。UserService接口p...原创 2018-10-28 20:44:32 · 798 阅读 · 0 评论 -
Spring AOP(五)AOP的引入
引入引入就是在一个接口的基础上引入新的接口增强功能。在上一篇博客中测试AOO的时候,我们打印了用户信息,如果用户信息为空,则抛出异常。事实上,我们还可以检测用户信息是否为空,如果为空则不再打印,这样就没有异常产生了。但现有的UserService接口并没有提供这样的功能,这里假定UserService这个服务并不是自己所提供,而是别人提供的,我们不能修改它,这时Spring还允许增强这个接...原创 2018-10-28 21:16:15 · 3057 阅读 · 3 评论 -
Spring AOP(六)通知获取参数
通知获取参数在之前AOP的文章中,大部分我们没有给通知传递参数。有时候我们希望能够传递参数给通知。我们只需要子啊切点处加入对应的正则式就可以了。当然,对于非环绕通知我们还可以使用一个连接点(Pointcut)类型的参数,通过它也可以获取参数。前置通知中获取参数切面类MyAspectpackage com.lay.springboot_aop.aspect;import org.asp...原创 2018-10-29 10:15:50 · 6170 阅读 · 0 评论 -
Spring AOP(七)JDK和CGLIB
JDK和CGLIB我们先了解一下Spring AOP织入的概念织入:是一个生成动态代理对象并且将切面和目标对象方法变成成为约定流程的过程。对于流程上的通知,之前我们都采用接口+实现类的模式,这时Spring推荐的方式。但是对于是否拥有接口则不是Spring AOP的强制要求。对于动态代理也有很多实现方法,JDK动态代理只是其中的一种,业界比较流行的还有CGLIB、Javassit、AS...原创 2018-10-29 18:38:33 · 491 阅读 · 0 评论 -
Spring AOP(八)AOP多切面编程
AOP多切面编程Spring可以支持多个切面的运行。首先我们来创建3个切面类。MyAspect1package com.lay.springboot_aop.aspect;@Aspectpublic class MyAspect1 { @Pointcut("execution(* com.lay.springboot_aop.aspect.service.impl.User...原创 2018-10-29 18:39:43 · 739 阅读 · 0 评论 -
Spring AOP(三)AOP的概念
AOP的概念通过约定编程的例子发现,只要按照以定的规则,我们就可以将你的代码织入事先约定的流程中。Spring AOP就是一种约定编程。为什么使用AOPAOP最典型的应用实际就是数据库事务的管控。举例,当用户A在银行转账给用户B的时候,A的账户扣款和B的账户收款要一并保存到数据库中。流程如下这里的A扣款和B收款我们都已使用面向对象编程(OOP)进行设计,但是他们在数据库事务中的要求是,...原创 2018-10-27 17:28:55 · 1271 阅读 · 1 评论 -
AOP通过连接点获取Method异常(java.lang.NoSuchMethodException)
AOP获取Method异常 java.lang.NoSuchMethodException问题在用AOP做日志的时候,出现了java.lang.NoSuchMethodException无法获得Method的异常。原方法/** * 获取日志注解参数 * @param joinPoint * @return * @Date 2018年11...原创 2018-11-11 23:51:07 · 3852 阅读 · 6 评论