博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring系列教程——12配置文件实现AOP
阅读量:3958 次
发布时间:2019-05-24

本文共 1762 字,大约阅读时间需要 5 分钟。

Spring系列教程——12配置文件实现AOP

配置文件其实本质上也是上一节讲的原理,只不过简化了我们的代码量而已。基本思想就是spring 创建代理对象,从spring容器中手动的获取代理对象。

本节我们需要在前面基础上再导入一个新的jar包

链接:https://pan.baidu.com/s/1ykeaUcmOHxB5GDaOD4nb5Q

提取码:2mdp
链接:https://pan.baidu.com/s/1PiFCtYldUefZtF42Z07f4g
提取码:mjeq

文章目录

一.半自动实现

在上一节当中我们实现代理需要切面类,接口,工厂类,目标类,而在配置文件半自动实现的方式中我们不需要再写工厂类,因此称之为半自动

首先我们把上一章节讲的切面类修改为如下内容:(需要实现MethodInterceptor接口)

package aspect;import org.aopalliance.intercept.MethodInterceptor;import org.aopalliance.intercept.MethodInvocation;//注意是org.aopalliance.intercept下面的MethodInterceptor(方法拦截类)public class MyAspect implements MethodInterceptor {
public void before(){
System.out.println("before被执行了"); } public void after(){
System.out.println("after被执行了"); } @Override public Object invoke(MethodInvocation methodInvocation) throws Throwable {
/* 代码补充区 */ return null; }}

在代码补充区我们写:

System.out.println("前置代码");//方法放行methodInvocation.proceed();System.out.println("后置代码");

下面我们通过配置来获取UserServiceImpl的代理;

测试代码:

ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");IUserService userService = (IUserService) context.getBean("serviceProxy");userService.updateUser();

在这里插入图片描述

上面是默认的JDK代理,现在我们使用CGLIB只需要修改配置文件加上一句变为:

最后这一小节我们还需要补充一点就是

这里我们只写了一个接口如果是多个接口可以这么写(下面我在写了一个,多个接口多加几个list就行了):

二.全自动实现

全自动就是可以不经过代理来织入通知,而是直接织入切入点。

这里我们需要再导入一个jar包

链接:https://pan.baidu.com/s/1Wt-27ZTmTqJ2GRr-Md0peg

提取码:4z6j

配置时的基本思路就是将切入点通知连接起来。

仅在上面的基础上修改一下xml文件如下:

运行结果为

在这里插入图片描述

三.补充知识

AOP联盟通知类型参考文章。

转载地址:http://etlzi.baihongyu.com/

你可能感兴趣的文章
shell脚本的exit问题(退出脚本还是退出终端)
查看>>
linux export命令参数及用法详解--linux设置环境变量命令
查看>>
Shell单引号,双引号,反引号,反斜杠
查看>>
Qt中内存泄露和退出崩溃的问题
查看>>
常见颜色
查看>>
Source Insight 经典教程
查看>>
快速打开菜单附件中的工具
查看>>
Windows系统进程间通信
查看>>
linux exec的用法
查看>>
C语言中如何使用宏
查看>>
Http与RPC通信协议的比较
查看>>
Source Insight的对齐问题
查看>>
ubuntu设置开机默认进入字符界面方法
查看>>
chrome 快捷键
查看>>
Linux下buffer和cache的区别
查看>>
程序员不应该再犯的五大编程错误
查看>>
utf8中文编码范围
查看>>
oracle中文(utf8)按拼音排序的简单解决方案
查看>>
[转载][转帖]Hibernate与Sleep的区别
查看>>
Linux系统的默认编码设置
查看>>