Spring的AOP开发(基于AspectJ的XML方式)
Spring的AOP的简介:
AOP思想最早是由AOP联盟组织提出的。Spring是使用这种思想最好的框架
Spring的AOP有自己实现的方式(非常繁琐)。 Aspect是一个AOP的框架, Spring引入 Aspect作为自身AOP的开发。
Spring两套AOP开发方式
◆ Spring传统方式(弃用)。
◆ Spring基于 Aspect的AoP的开发(使用)
AOP 的开发中的相关术语:
废话少说,我们上代码!
1.引入相应的 jar 包
2.引入 Spring 的配置文件
在src下创建applicationContext.xml
<?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">
<!-- bean definitions here -->
</beans>
3.编写目标类
创建类和接口
package com.rick.aop.demo1;
public interface ProductDao {
public void save();
public void update();
public void find();
public void delete();
}
package com.rick.aop.demo1;
public class ProductDaoImpl implements ProductDao{
@Override
public void save() {
System.out.println("商品添加。。。");
}
@Override
public void update() {
System.out.println("商品更新。。。");
}
@Override
public void find() {
System.out.println("商品查找。。。");
}
@Override
public void delete() {
System.out.println("商品删除。。。");
}
}
4.目标类的配置
<!-- 配置目标对象:被增强的对象 -->
<bean id="productDao" class = "com.rick.aop.demo1.ProductDaoImpl"></bean>
5.整合 Junit 单元测试
引入 spring-test.jar
package com.rick.aop.demo1;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class TestDemo {
@Resource(name = "productDao")
private ProductDao productDao;
@Test
public void demo1() {
productDao.save();
productDao.update();
productDao.delete();
productDao.find();
}
}
编写切面类
package com.rick.aop.demo1;
/*
* 切面类
*/
public class MyAspectXml {
//前置增强
public void checkPri() {
System.out.println("权限校验===========");
}
}
配置:将切面类交给spring管理
<!-- 配置切面类 -->
<bean id="myAspectXml" class = "com.rick.aop.demo1.MyAspectXml"></bean>
<!-- 进行 aop 的配置 -->
<aop:config>
<!-- 配置切入点表达式:哪些类的哪些方法需要进行增强 -->
<aop:pointcut expression="execution(*com.rick.aop.demo1.ProductDaoImpl.save(..))" id="pointcut1"/>
<!-- 配置切面 -->
<aop:aspect ref="myAspectXml">
<aop:before method="checkPri" pointcut-ref="pointcut1" />
</aop:aspect>
</aop:config>
测试:
通知类型
- 前置通知可以获得切入点信息
- 后置通知可以获得返回值
- 环绕通知可以组织目标方法的 执行
切入点表达式
其他的增强的配置:
上代码
修改
测试
Spring的AOP开发(基于AspectJ的XML方式)的更多相关文章
- Spring的AOP开发入门,Spring整合Junit单元测试(基于ASpectJ的XML方式)
参考自 https://www.cnblogs.com/ltfxy/p/9882430.html 创建web项目,引入jar包 除了基本的6个Spring开发的jar包外,还要引入aop开发相关的四个 ...
- 基于AspectJ的XML方式进行AOP开发
-------------------siwuxie095 基于 AspectJ 的 XML 方式进行 AOP 开发 1 ...
- 【AOP】操作相关术语---【Spring】的【AOP】操作(基于aspectj的xml方式)
[AOP]操作相关术语 Joinpoint(连接点):类里面哪些方法可以被增强,这些方法称为连接点. Pointcut(切入点):在类里面可以有很多的方法被增强,比如实际操作中,只是增强了类里面add ...
- 十四 Spring的AOP的基于AspectJ的注解开发
Spring的AOP的基于AspectJ的注解开发 创建项目,引入jar包 编写目标类.切面类 配置目标类.切面类 在注解文件里开启AOP的开发 <?xml version="1.0& ...
- Spring框架的事务管理之基于AspectJ的XML方式(重点掌握)
1. 步骤一:恢复转账开发环境(转账开发环境见“https://www.cnblogs.com/wyhluckdog/p/10137283.html”) 2.步骤二:引入AOP的开发包3.步骤三:引入 ...
- Spring事务管理之声明式事务管理-基于AspectJ的XML方式
© 版权声明:本文为博主原创文章,转载请注明出处 案例 - 利用Spring的声明式事务(AspectJ)管理模拟转账过程 数据库准备 -- 创建表 CREATE TABLE `account`( ` ...
- day39-Spring 11-Spring的AOP:基于AspectJ的XML配置方式
package cn.itcast.spring3.demo2; import org.aspectj.lang.ProceedingJoinPoint; /** * 切面类 * @author zh ...
- Spring的AOP基于AspectJ的注解方式开发3
上上偏博客介绍了@Aspect,@Before 上篇博客介绍了spring的AOP开发的注解通知类型:@Before,@AfterThrowing,@After,@AfterReturning,@Ar ...
- 基于AspectJ的注解方式进行AOP开发
-------------------siwuxie095 基于 AspectJ 的注解方式进行 AOP 开发 ...
随机推荐
- javascript入门教程01
1.javascript中变量的声明和赋值的三种方式 (1)先声明后赋值 var width; width=5; (2)同时声明和赋值变量 var width=5; var x,y,z=10; (3) ...
- git 修改分支 删除分支 新增分支
一.修改分支名 1.本地分支重命名 git branch -m oldName newName 2.将重命名后的分支推送到远程 git push origin newName 3.重新更新所有分支 g ...
- Linux--info命令 ,help命令,man命令(帮助)
Info和man命令一样都是帮助类文件 Info文件不仅包含信息,而且还包含连接到其他info文件的链接. 如何使用info显示希望的内容 * 如何操纵Info系统 * 如何显示Info的帮助信息. ...
- tensorflow文本分类实战——卷积神经网络CNN
首先说明使用的工具和环境:python3.6.8 tensorflow1.14.0 centos7.0(最好用Ubuntu) 关于环境的搭建只做简单说明,我这边是使用pip搭建了python的 ...
- 解题报告:luogu P2220
指挥使走后一脸懵逼,然后想起了一道水\(SB\)的省选题. 这是毒瘤乘法分配率的应用,似乎还有一篇,算是入门题. 对了,这题连接:P2220 [HAOI2012]容易题 然而蒟蒻还是先自闭了一会... ...
- 把链接生成二维码 二维码中间带有logo
在工程中引入三个文件jquery.qrcode.js.qrcode.js.utf.js.其中utf.js文件是防止链接中的参数出现中文乱码现象 jquery.qrcode.js文件 function ...
- 本地jar在打包时打入到项目中去
<dependency> <groupId>com.hxyc</groupId> <artifactId>hxyc-common</artifac ...
- 记录一次Git远程仓库版本回退
操作过程: 首先查看远程仓库版本,如下图所见,最近一次提交为2018-03-19 22:16:25 第一步:使用git log命令查看历史提交记录,选择要回退的版本号,commit后面一串字符,这里我 ...
- 爱屋吉屋官网、APP停运!互联网房屋中介真的迎来了至暗时刻吗?
2018年底到2019年初,全球较差的经济大环境终于引来爆炸式的连锁反应.仅从国内的互联网行业来看,很多企业在浪潮退去后都只是在"裸泳".比如被爆料2018年全年亏损109亿元,且 ...
- ORACLE锁表问题
1.查询锁表的信息 select sess.sid,sess.serial#, lo.oracle_username,lo.os_user_name, ao.object_name,lo.locked ...