先说一下相应的知识作铺垫
Spring的AOP术语:
1)连接点(JointPoint):目标对象的每个方法
2)切入点(PontCut):切入了服务代码的连接点
3)通知(Advice):在切入点上面需要切入的服务代码
4)切面(Aspect/Advisor):在指定的切入点切入指定的通知形成切面
1、导入所需的jar包
Spring的IOC和AOP包
2、创建dao类
package star.july.d_spring_aop;
import org.aspectj.lang.ProceedingJoinPoint;
public class MyAspect {
/**
* 常用的通知类:
* 前置通知: 在目标对象的连接点之前调用
* 后置通知:在目标对象的连接点之后调用
* 环绕通知: 在目标对象的连接点之前与之后调用
*/
//定义前置通知
public void before(){
System.out.println("开启事务");
}
//定义后置通知
public void after(){
System.out.println("结束事务");
}
//环绕通知
public void round(ProceedingJoinPoint jp) throws Throwable{
System.out.println("环绕通知前面代码");
//执行目标对象的核心方法
jp.proceed();//执行连接点方法
System.out.println("环绕通知后面代码");
}
}
3、创建切面类
package star.july.d_spring_aop;
public class MyAspect {
/**
* 常用的通知类:
* 前置通知: 在目标对象的连接点之前调用
* 后置通知:在目标对象的连接点之后调用
* 环绕通知: 在目标对象的连接点之前与之后调用
*/
//定义前置通知
public void before(){
System.out.println("开启事务");
}
}
4、配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 1.创建目标对象 -->
<bean id="userDao" class="star.july.d_spring_aop.UserDao"></bean>
<!-- 2.创建切面类对象 -->
<bean id="myaspect" class="star.july.d_spring_aop.MyAspect"></bean>
<!-- 3.配置切面 -->
<aop:config>
<!--
切面
ref:关联切面类对象
-->
<aop:aspect ref="myaspect">
<!--
3.1切入点
id:切入点的别名
expression: 切入点表达式 :格式: execution(方法的返回值类型 方法名(包+类 ..:表示零个或一个以上)(方法中参数列表))
-->
<aop:pointcut expression="execution(* star.july.d_spring_aop.UserDao.*(..))" id="myspt"/>
<!-- 3.2通知 -->
<!-- 前置通知
method:切面类中的前置通知的方法名称
point-ref:需要关联的切入点
-->
<aop:before method="before" pointcut-ref="myspt"/>
<aop:after method="after" pointcut-ref="myspt"/>
<aop:around method="round" pointcut-ref="myspt"/>
</aop:aspect>
</aop:config>
</beans>
5、测试
package star.july.d_spring_aop;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Demo {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("/applicationContext.xml");
UserDao userDao = (UserDao)ac.getBean("userDao");
userDao.save();
userDao.update();
}
}
Spring中的简单实现AOP小例子相关推荐
- 在Eclipse中写第一个hibernate小例子
在hibernate自带的文档中,包含了一个很简单的小例子,不过这个小例子是基于ant的,而且说的不是很详细,不利于新手学习.在这里,我将在Eclipse中实现这个例子,并给出详细的实现步骤. ...
- spring中基于XML的AOP配置步骤
spring中基于XML的AOP配置步骤 IAccountService.java package com.itheima.service;/*** 账户的业务层接口*/ public interfa ...
- Spring中的IOC和AOP是什么意思?
(1) Spring是什么? IOC(控制反转)和AOP(面向方面编程)作为Spring框架的两个核心,很好地实现了解耦合.所以,简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AO ...
- Spring中的5种Aop常见应用方式(扫描注解方式)
转载于:https://zhuanlan.zhihu.com/p/103236714 提到Aop,不得不提的那就是动态代理:关于动态代理,可以参考前面写过的文章 加耀:浅谈动态代理zhuanlan. ...
- 谈谈Spring中的IOC和AOP概念 - 倪升武的博客 - CSDN博客
转载于https://blog.csdn.net/eson_15/article/details/51090040 IOC和AOP是Spring中的两个核心的概念,下面谈谈对这两个概念的理解. 1. ...
- 关于Spring中IOC容器和AOP协同工作的原理理解
1.在详细介绍 IOC 容器的工作原理前,这里先介绍一下实现 IOC 所用到的一些辅助类,包括BeanDefinition.BeanReference.PropertyValues.PropertyV ...
- spring中的loc和aop
一.IOC理解 首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.ite ...
- spring中的IOC和AOP
IOC IOC(Inversion Of Controll,控制反转)是一种设计思想,将原本在程序中手动创建对象的控制权,交由给Spring框架来管理.IOC容器是Spring用来实现IOC的载体,I ...
- springIllegalArgumentException Can not set field to $Proxy 在spring中使用事物或AOP遇到的错误
一.问题出现 今天在ssm整合多模块的时候,当service注入到controller时,出现了service无法注入问题. 应用transaction注解方法的典型场景:接口+实现,在实现整个类上加 ...
最新文章
- 《Spark大数据分析实战》——1.4节弹性分布式数据集
- 一切皆文件的编程思想
- mysql中Table is read only 的解决方法小结
- 滥用网络爬虫技术,多家公司被查!互金行业风控外包时代终结
- 最长回文子序列(算法导论15-2
- 1 分钟 Serverless 部署掌上游戏机,“一行命令”找回小时候的乐趣!
- 浏览器开发调试工具的秘密 - Secrets of the Browser Developer Tools
- CF1654F-Minimal String Xoration【倍增】
- leetcode 222. 完全二叉树的节点个数(dfs)
- 作了一件超人品的事情,看到的各位都有好运
- 韩山师范计算机科学与技术,韩山师范学院计算机科学与技术专业
- c语言变量名s_i使其随i变化,动态规划I(含细c语言代码).ppt
- 【李宏毅机器学习】03:误差Error
- 自己闲着没事整理的人工智能思维导图(2(鸢尾花))
- 使用mat工具分析对比dump文件
- 判断浏览器是否支持html5
- 关于计算机信息学奥赛视频,震惊!信息学奥赛好处竟然这么多
- 坑爹的工行Chrome网银插件
- 制作颜色选择器(全)
- 家里宽带628连不上_宽带连接错误628连接被远程计算机终止是什么意思 - 卡饭网...
热门文章
- 区块链BaaS云服务(7)微软Azure区块链服务
- 2022年美国大学生数学建模竞赛——Problem C:交易策略
- 如何编写一个测试HIDL接口的vts(gtest)的testcase
- android指纹fingerprint学习总结
- 信息安全之网络安全初体验(保密向)(一)
- solidity编码规范
- DVWA学习(三)Brute Force(暴力破解)
- OpenGL 坐标系统(Perspective)
- EPROCESS ETHREAD简介
- python按正则方式搜索文件