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方式)的更多相关文章

  1. Spring的AOP开发入门,Spring整合Junit单元测试(基于ASpectJ的XML方式)

    参考自 https://www.cnblogs.com/ltfxy/p/9882430.html 创建web项目,引入jar包 除了基本的6个Spring开发的jar包外,还要引入aop开发相关的四个 ...

  2. 基于AspectJ的XML方式进行AOP开发

    -------------------siwuxie095                                 基于 AspectJ 的 XML 方式进行 AOP 开发         1 ...

  3. 【AOP】操作相关术语---【Spring】的【AOP】操作(基于aspectj的xml方式)

    [AOP]操作相关术语 Joinpoint(连接点):类里面哪些方法可以被增强,这些方法称为连接点. Pointcut(切入点):在类里面可以有很多的方法被增强,比如实际操作中,只是增强了类里面add ...

  4. 十四 Spring的AOP的基于AspectJ的注解开发

    Spring的AOP的基于AspectJ的注解开发 创建项目,引入jar包 编写目标类.切面类 配置目标类.切面类 在注解文件里开启AOP的开发 <?xml version="1.0& ...

  5. Spring框架的事务管理之基于AspectJ的XML方式(重点掌握)

    1. 步骤一:恢复转账开发环境(转账开发环境见“https://www.cnblogs.com/wyhluckdog/p/10137283.html”) 2.步骤二:引入AOP的开发包3.步骤三:引入 ...

  6. Spring事务管理之声明式事务管理-基于AspectJ的XML方式

    © 版权声明:本文为博主原创文章,转载请注明出处 案例 - 利用Spring的声明式事务(AspectJ)管理模拟转账过程 数据库准备 -- 创建表 CREATE TABLE `account`( ` ...

  7. day39-Spring 11-Spring的AOP:基于AspectJ的XML配置方式

    package cn.itcast.spring3.demo2; import org.aspectj.lang.ProceedingJoinPoint; /** * 切面类 * @author zh ...

  8. Spring的AOP基于AspectJ的注解方式开发3

    上上偏博客介绍了@Aspect,@Before 上篇博客介绍了spring的AOP开发的注解通知类型:@Before,@AfterThrowing,@After,@AfterReturning,@Ar ...

  9. 基于AspectJ的注解方式进行AOP开发

    -------------------siwuxie095                                     基于 AspectJ 的注解方式进行 AOP 开发         ...

随机推荐

  1. javascript入门教程01

    1.javascript中变量的声明和赋值的三种方式 (1)先声明后赋值 var width; width=5; (2)同时声明和赋值变量 var width=5; var x,y,z=10; (3) ...

  2. git 修改分支 删除分支 新增分支

    一.修改分支名 1.本地分支重命名 git branch -m oldName newName 2.将重命名后的分支推送到远程 git push origin newName 3.重新更新所有分支 g ...

  3. Linux--info命令 ,help命令,man命令(帮助)

    Info和man命令一样都是帮助类文件 Info文件不仅包含信息,而且还包含连接到其他info文件的链接. 如何使用info显示希望的内容 * 如何操纵Info系统 * 如何显示Info的帮助信息. ...

  4. tensorflow文本分类实战——卷积神经网络CNN

    首先说明使用的工具和环境:python3.6.8   tensorflow1.14.0   centos7.0(最好用Ubuntu) 关于环境的搭建只做简单说明,我这边是使用pip搭建了python的 ...

  5. 解题报告:luogu P2220

    指挥使走后一脸懵逼,然后想起了一道水\(SB\)的省选题. 这是毒瘤乘法分配率的应用,似乎还有一篇,算是入门题. 对了,这题连接:P2220 [HAOI2012]容易题 然而蒟蒻还是先自闭了一会... ...

  6. 把链接生成二维码 二维码中间带有logo

    在工程中引入三个文件jquery.qrcode.js.qrcode.js.utf.js.其中utf.js文件是防止链接中的参数出现中文乱码现象 jquery.qrcode.js文件 function ...

  7. 本地jar在打包时打入到项目中去

    <dependency> <groupId>com.hxyc</groupId> <artifactId>hxyc-common</artifac ...

  8. 记录一次Git远程仓库版本回退

    操作过程: 首先查看远程仓库版本,如下图所见,最近一次提交为2018-03-19 22:16:25 第一步:使用git log命令查看历史提交记录,选择要回退的版本号,commit后面一串字符,这里我 ...

  9. 爱屋吉屋官网、APP停运!互联网房屋中介真的迎来了至暗时刻吗?

    2018年底到2019年初,全球较差的经济大环境终于引来爆炸式的连锁反应.仅从国内的互联网行业来看,很多企业在浪潮退去后都只是在"裸泳".比如被爆料2018年全年亏损109亿元,且 ...

  10. ORACLE锁表问题

    1.查询锁表的信息 select sess.sid,sess.serial#, lo.oracle_username,lo.os_user_name, ao.object_name,lo.locked ...