切面

阶段3 2.Spring_08.面向切面编程 AOP_10 总结和作业安排

百般思念 提交于 2019-11-27 10:33:39
由转账添加事物,使得我们的操作变的非常麻烦。重复代码产生了很多 实际的开发中如果想记录日志每个方法都要执行 如果判断用户是否登陆也是每个方法都需要判断 这些重复的代码我们都需要去解决。 解决的方式,以前是重复代码抽取。抽取出来之后就调用。抽取并不是终点,只是第一步。 接下来就需要把重复的代码在方法执行时加进去。那么怎么加进去呢?这就是之前讲到的技术,动态代码是不该原有方法的基础上,对方法进行 增强。 sprinfg中的AOP: 创建代理对象都是固定的,唯一不固定的就是增强的部分 那么怎么增强、什么时候增强,就是你的前置也好 后置也好、异常也好、最终也好、他的各种通知类型。只要把这些都说明白了剩下的事情Spring都能给我们实现 布置作业 这里是通过代理类的方式。把factory都删掉。加入springaop来实现事务的控制 来源: https://www.cnblogs.com/wangjunwei/p/11359748.html

阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置

大憨熊 提交于 2019-11-27 10:32:07
复制依赖和改jar包方式 src下的都复制过来。 复制到新项目里了 bean.xml里面复制上面一行代码到下面。把aop改成context。 配置spring容器创建时要扫描的包 Service的配置这里就可以删除了 配置注解 使用@Service注解 开始AOP配置 把通知类交给Spring来管理 在Logger上加注解。之类注意,@Service和@Repository都不合适。因为logger属于三层 所以这里用@Component这个注解来配置 写完上面的@Component的注解后。bean.cml内的配置就可以删除了 配置切面类 注意Before这里是aspectj这个包里的,不要和JUnit的混了。 环绕通知 写完这些通知的注解就报错。因为没有切入点表达式 这是我们之前的bean.xml内配置的切入点表达式 新定义的私有方法pt1在pt1的上面定义的切入点表达式和注解 beam.xml内这些就都可以删除了 开启Spring开启注解AOP的支持 引用注解表达式 这里测试前面四个通知的时候,先把环绕通知注释掉 测试 后置居然在最终的前面了 我们都知道 后置通知和异常是互斥的。这里把异常放开 后置通知消失了 变成了异常通知 Spring基于注解的,这四个通知确实有调用的顺序问题,所以我们在开发中,要有一个慎重的考虑 环绕通知放开,其他通知都注释掉 通知都注释掉

阶段3 2.Spring_08.面向切面编程 AOP_8 spring中的环绕通知

ぃ、小莉子 提交于 2019-11-27 09:52:27
环绕通知。method属性需要新加一个方法 在logger内中新加aroundPringLog方法 异常代码先注释掉 对比现在的环绕通知和之前写代理类做的环绕通知。右侧的方法内有明确的业务层方法(切入点方法)调用。左边没有业务方法调用 proceed方法有异常,需要在try catch中 try catch 必须用Throwable要不然拦不住这个异常 通过配置实现,也可以通过自己编码来实现 来源: https://www.cnblogs.com/wangjunwei/p/11357263.html

阶段3 2.Spring_08.面向切面编程 AOP_7 通用化切入点表达式

半腔热情 提交于 2019-11-27 08:45:28
下面配置了通用的表达式,,上面的四个就不用再配置那么长 索罗的切入点表达式了。 节省了每次都要写一长段表达式的过程 写在一个aop:aspect这个切面下面就只能当前切面用 写在切面里面 运行测试 挪到切面外面。报错了 因为切面标签报错了。如果运行测试方法就会报错。但是提示的错误不明显 原因是导了约束就必须按照约束去配置 约束里面要求,这个标签必须出现在切面之前 再次运行测试 。成功执行 来源: https://www.cnblogs.com/wangjunwei/p/11355509.html

阶段3 2.Spring_08.面向切面编程 AOP_4 spring基于XML的AOP-配置步骤

狂风中的少年 提交于 2019-11-27 08:37:13
resources下新建bean.xml文件 xmlns:aop 先配置IOC aop 通知类就是logger。id配置为logAdvice表示日志的通知 梳理流程 首先我们在这有个Service它需要增强。它想在执行里面任何一个方法时都记录日志 然后我们就准备出了一个日之类。这个日志类里面就一个prinLog方法可以记录日志 配置了日志的通知。并说明里面有个printLog方法。会在Service的方法之前执行执行 现在还存在一个很大的问题。我们的前置通知类和Serice没有任何的关系 pointCut 过一遍思路 切点表达式明确的说,prinlog要对saveAccount进行增强 来源: https://www.cnblogs.com/wangjunwei/p/11355001.html

阶段3 2.Spring_08.面向切面编程 AOP_3 spring基于XML的AOP-编写必要的代码

自古美人都是妖i 提交于 2019-11-27 08:36:09
新建项目 先改打包方式 导包,就先导入这俩包的坐标 aspectjweaver为了解析切入点表达式 新建业务层接口 定义三个方法 看返回和参数的区别。为了把这三类方法表现出来,并不局限于方法干什么事 1.无参无返回值 2.有参无返回值 3.有返回值无参 创建实现类,,业务层的实现类 重写三个方法,方法内只是输出一段话 新建具有公共代码的类 来源: https://www.cnblogs.com/wangjunwei/p/11354909.html

aop面向切面不用注解的方式

孤人 提交于 2019-11-27 07:40:01
aop基本概念: 在百科中有很多专业的解释 ,最让人痛苦事就是用专业的语言解释专业,让人看完云里雾里。下面将用通俗的话语和代码块简单谈一下aop 程序运行中,会有很多重复的部分的部分,怎么办,揪出来,单独放在一个地方,以后哪部分需要,就对这部分生成个切点,让他用去。 好处:程序运行中,不用修改源码,就能够对已有的代码进行增强; 优势:打印重复的都揪出来放在一个地方了,那当然就是减少代码重复了,减少的目的那就提高效率喽 场景:我在service中目前就打印一句话“你好”,但是我想在运行每一个service的代码中都同时打印出 如 前置通知 后置通知 环绕通知等等 很明显 把每次都想打印的东西揪出来,放在一个类中 ,然后在配置文件中给引入 那么问题有来了 怎么在配置文件中引用呢 先引入aop约束 建立配置文件,文件中当然要写aop切面 所谓切面 就是切点和增强方法构成 类 那啥是切点呢? 引入切点 所谓切点 就是切入点 执行的范围,比如说 小明现在没穿衣服,需要给小明穿上衣服,那么好了 ,小明就是切点,穿衣服就是增强方法(增强方法也叫通知) 那么问题来了 ,如何用呢。 <aop:pointcut id="pointcut" expression="execution(* cn.cfg.service.*.*(..))"></aop:pointcut> 切点搞完了

Spring

≯℡__Kan透↙ 提交于 2019-11-27 07:36:31
Spring是一个基于IOC和AOP的结构J2EE系统的框架 IOC 反转控制,Inversion of Control.将new方式创建对象变为交给Spring创建对象. DI 依赖注入 Dependency Inject.会在生成的对象中注入默认值. 使用. 1.IDEA创建Spring项目. 2.修改spring-config.xml,加入需要的类的bean. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean name="c" class="pojo.Category"> <property name="name" value="category 1" /> </bean> </beans> 3

SpringBoot--AOP

て烟熏妆下的殇ゞ 提交于 2019-11-27 04:00:25
Aspect Oriented Programming(AOP): 面向切面编程,通过预编译方 式和运行期动态代理实现程序功能的统一维护的一种技术,可以让一组类共享相同的行为,实现解耦。 Spring AOP: 通过JDK的动态代理和CGLIB(Code Generation Librar)实现。 切面(Aspect): Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。 连接点(Joint point): 表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。 切点(Pointcut): 表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。 增强(Advice): Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。 引入(Introduction): 在不改变一个现有类代码的情况下,为该类添加属性和方法,可以在无需修改现有类的前提下,让它们具有新的行为和状态