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. [转]轻松理解AOP思想(面向切面编程)

    原文链接 Spring是什么 先说一个Spring是什么吧,大家都是它是一个框架,但框架这个词对新手有点抽象,以致于越解释越模糊,不过它确实是个框架的,但那是从功能的角度来定义的,从本质意义上来讲,S ...

  2. input、raw_input区别,运算符,运算优先级,多变赋值方式

    目录 1. Python2中的input.raw_input赋值方式和Python3中的input赋值方式的差别 2. 运算符 3. python运算符优先级 4. 格式化输出 5. 链式赋值 6. ...

  3. Linux系统的发展历史和学习前景介绍

    2020年了,我想来跟大家聊聊Linux运维这一行业,从几个方面说下行业的现状.如何学好Linux和如何成为专业运维人员以及云服务对于Linux运维的影响. 一.linux行业状况 我们都知道从199 ...

  4. gcd && exgcd算法

    目录 欧几里德算法与扩展欧几里德算法 1.欧几里德算法 2.扩展欧几里德算法 欧几里德算法与扩展欧几里德算法 1.欧几里德算法 #include<bits/stdc++.h> using ...

  5. LauUI 的学习

    LayUI学习笔记 layer laydate layui 学习新技术方法:学习一个新技术,要去把它的文档通读一遍,不管你能不能读明白,就算你不明白也大概能知道它是怎么回事了,一回生二回熟,多读几遍, ...

  6. h5 穿透滚动

    引子 h5 页面有弹窗浮层时,浮层之下若产生了滚动,滑动浮层时会让其产生滚动.这是示例页面,移动端访问如下: Origin My GitHub 原因 找到的信息里面有两种说法: 使用了 -webkit ...

  7. 如何使用ffmpeg的c语言sdk实现对文件夹的操作

    重要函数 打开文件夹:avio_open_dir() 读取文件夹:avio_read_dir() 关闭文件夹:avio_close_dir() 结构体, 操作目录的上下文:AVIODirContext ...

  8. Xcode下载途径

    Xcode除了能在Appstore直接下载外,还可以用开发者账号登陆开发者中心[https://developer.apple.com/download/]下载对应的资源. 在开发者中心下载的好处是, ...

  9. CentOS7 安装PHP7的swoole扩展:

    一.绪 Swoole简介 PHP异步网络通信引擎 最终编译为so文件作为PHP的扩展 准备工作 Linux环境 PHP7 swoole2.1 redis 源码安装PHP7 源码安装swoole htt ...

  10. LeetCode206. Reverse Linked List(反转链表)

    题目链接:https://leetcode.com/problems/reverse-linked-list/ 方法一:迭代反转 https://blog.csdn.net/qq_17550379/a ...