Spring AOP开发简单实例(不带切点的切面)

Spring AOP统一功能处理(切面、切点、连接点、通知) 什么是AOP思想,AOP的组成、SpringAOP的实现,利用AOP计算一个方法的执行时间😁 阅读详情

1. 导入相应的jar包
 <1>spring-aop-3.2.0.RELEASE.jar
 <2>Spring依赖包中的com.springsource.org.aopalliance-1.0.0.jar

2. 编写被代理对象
<1>接口CustomerDao:

public interface CustomerDao {
    public void add();
    public void update();
    public void delete();
    public void find();
}

<2>CustomerDao的实现类CustomerDaoImpl:

public class CustomerDaoImpl implements CustomerDao {

    public void add() {
        System.out.println("添加客户!!");
    }

    public void update() {
        System.out.println("修改客户!!");
    }

    public void delete() {
        System.out.println("删除客户!!");
    }

    public void find() {
        System.out.println("查找客户!!");
    }

}

3. 编写增强代码
 编写增强代码,这边选择前置增强:

public class MyBeforeAdvice implements MethodBeforeAdvice{

    public void before(Method method, Object[] args, Object target)
            throws Throwable {
        /**
         * method:执行的方法。
         * args:参数。
         * target:目标对象。
         */
        System.out.println("============前置增强===============");
    }

}

4. 配置信息并配置生成代理
* 属性:
target : 代理的目标对象
proxyInterfaces : 代理要实现的接口
如果多个接口可以使用以下格式赋值

<list>
    <value></value>
    ....
</list>

proxyTargetClass : 是否对类代理而不是接口,设置为true时,使用CGLib代理
interceptorNames : 需要织入目标的Advice
singleton : 返回代理是否为单实例,默认为单例
optimize : 当设置为true时,强制使用CGLib

 信息配置

<!-- 被增强对象 -->
    <bean id="customerDao" class="com.demo.CustomerDaoImpl"></bean>

    <!-- 定义增强 -->
    <bean id="beforeAdvice" class="com.demo.MyBeforeAdvice"></bean>

 生成代理的Spring基于ProxyFactoryBean类,底层自动选择使用JDK动态代理还是CGLib的代理。

<!-- Spring支持配置生成代理 -->
    <bean id="customerDaoProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
        <!-- 设置目标对象 -->
        <property name="target" ref="customerDao"></property>
        <!-- 设置实现的接口,value中写接口的全路径 -->
        <property name="proxyInterfaces" value="cn.itcast.demo1.CustomerDao"></property>
        <!-- 需要使用value:要的是名称 -->
        <property name="interceptorNames" value="beforeAdvice"></property>
    </bean>
  1. 测试使用
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringTest3 {
    @Autowired
    @Qualifier("customerDaoProxy")  
    private CustomerDao customerDao;

    @Test
    public void demo1(){
        customerDao.add();
        customerDao.update();
        customerDao.delete();
        customerDao.find();
    }
}

6. 测试结果

============前置增强===============
添加客户!!
============前置增强===============
修改客户!!
============前置增强===============
删除客户!!
============前置增强===============
查找客户!!
【Spring】 AOP面向切面编程 横切关注点从每个方法中抽取出来的同一类非核心业务。在同一个项目中,我们可以使用多个横切关注点对相关方法进行多个不同方面的增强。有十个附加功能,就有十个横切关注点。AOP核心关注点和横切关注点。业务处理的主要流程是核心关注点,非核心代码是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处基本相似,比如权限认证、日志、事务、异常等。AOP的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。(分离核心业务代码与非核心代码通知(增强)每一个横切关注点。 阅读详情

相关推荐

SpringAOP之切点和切面的深入理解

在看这篇文章之前需要首先理解 Spring AOP 增强的知识,如果你想先了解增强的知识可以移步到 我另外一篇博客《Spring动态代理之详细DEBUG日志模式》里面有关于增强的知识 如果除了增强还有 关于CGlib 和 Proxy 代理的知识不太理解可以再移步到 《动态代理之详细DEBUG日志模式》好了,目前是建基于你都明白 动态代理 和 Spring 增强的基础上进行对Spring 中

搞事情的博客 1万+

Spring学习-18:Spring的AOP:不带有切点的切面

Spring中的AOP的学习,从两个角度:1、Spring的传统AOP(不作重点)2、Spring的AspectJ(重点) 一、Spring中的传统AOP AOP:不是由Spring定义,而是由AOP联盟来定义。AOP联盟为通知Advice定义了org.aopalliance.Interface.Advice。 Spring按照通知Advice在目标方法的连接点位置,可以分为五类 前置通知

Dove_Knowledge的博客 1万+

深入理解Spring AOP:实现带切点的切面

本文还有配套的精品资源,点击获取 简介:在Spring框架中,AOP是一个核心设计模式,允许将非业务逻辑的关注点如日志、事务管理等从业务代码中分离出来。本主题将深入解析如何在Spring中创建带有切点的切面,以及它们与源码、工具的结合使用。我们将讨论切点的定义、切面的实现、AOP的启用方法、源码分析、工具支持、实际应用案例以及对性能的影响。这些知识点将帮助开发者更好地掌握A...

weixin_32098457的博客 1393

Spring AOP中定义切点的详细介绍

AOP的切点定义大部分的人都知道excecution()其实在AOP中有很多关旭切点的参数,用好可这些参数可以让我们的工作事半功倍, 一.excecution() 关于excecution必须要介绍的就是怎么写这个括号里面的内容了. execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pat

Alemand的博客 9092

day39-Spring 05-Spring的AOP:不带有切点的切面

NULL 博文链接:https://364232252.iteye.com/blog/2371586

Spring实现AOP的多种方式 切点函数

里面包括4个例子:(1)Spring实现AOP方式之一:基于XML配置的Spring AOP (2)Spring实现AOP方式之二:使用注解配置 Spring AOP (3)Spring AOP : AspectJ Pointcut 切点 (4)Spring AOP : Advice 声明 (通知注解)

Spring框架由哪些部分组成?

1.Spring Core     Core封装包是框架的最基础部分,提供IOC和依赖注入的特性。这里的基础l概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。 2.Spring Context    构建于Core封装包基础上的Context封装包,提供了一种框架式的对象访问方法,有些像JNDI注...

Cheetahcubs的博客 5247

Eureka自我保护机制

Eureka自我保护机制 默认情况下,当eureka server在一定时间内没有收到实例的心跳,便会把该实例从注册表中删除(默认是90秒),但是,如果短时间内丢失大量的实例心跳,便会触发eureka server的自我保护机制,比如在开发测试时,需要频繁地重启微服务实例,但是我们很少会把eureka server一起重启(因为在开发过程中不会修改eureka注册中心),当一分钟内收到的心跳数大量减少时,会触发该保护机制。可以在eureka管理界面看到Renews threshold和Renews(last

Soul_Ming的博客 543

Spring AOP 概念理解及@AspectJ支持

为了更好的理解Spring简介一文http://quicker.iteye.com/blog/670056中的概念,下面通过一些示例来加以说明。 首先要理解代理模式:有静态代理和动态代理 有关代理模式相关文章: http://quicker.iteye.com/blog/571494 http://quicker.iteye.com/blog/571493 下面先给出静态代理的代码。 ...

仰望者! 249

Xlinx PG151 除法器IP 笔记

对Xlinx 除法器IP PG151中部分内容记录备忘。

weixin_50515160的博客 2528

深度学习二分类实战:用Python+Keras搞定基因表达数据预测(附完整代码)

本文详细介绍了如何使用Python和Keras构建深度学习模型进行基因表达数据的二分类预测。通过数据预处理、特征选择、神经网络构建及优化策略,特别针对小样本场景提供了调参技巧和模型解释方法。文章还包含完整的代码示例,帮助读者快速掌握深度学习在生物信息学中的应用。

weixin_30642561的博客 245

AOP切面使用

文章目录AOP切面使用首先定义一个@Aspect类然后通过execution写切点方法几个注解execution表达式的一些规则 AOP切面使用 首先定义一个@Aspect类 然后通过execution写切点方法 几个注解 @Around:在目标方法的前面和后面都执行我们的切点方法 @Before:只在目标方法的前面执行我们的切点方法 @After:只在目标方法的后面执行我们的切点方法 这里需要注意一下使用@Around的环绕通知和前置后置通知的一个最大的区别,环绕通知里面需要执行一个procced

xzy的博客 1634

以太网以及车载以太网概述

千兆网线和百兆网线区别 1、所谓的百兆网线其实就是 五类线 和超五类线 ,而千兆网线主要是指六类线 和超六类线 ,另外还有古老的十兆网线也就是指 四类线 和 三类线 等。 2、在使用上,其实千兆网线和百兆网线是没什么区别的,千兆网线完全兼容百兆网络。 3、百兆网线的线芯是8芯,但上传和下载只用到了其中的4根,而千兆网线需要完全用到8根。 4、另外在线芯的排布上,千兆网线的线芯中间有个十字形的塑料架,用来把四组8芯的线分开,这个百兆网线是没有的, 5、所有的网线在外皮上都有种类标识,CAT5 CAT

$好记性还是要多记录$ 4074

Spring之AOP的切点、通知、切点表达式以及知识要点

Spring之AOP的切点、通知、切点表达式以及知识要点

楠黎倾风的博客 1万+

攻击时间控制的动态逆三维制导律(源代码)

%参考文献:《攻击时间控制的动态逆三维制导律》,哈尔滨工程大学学报,2010 %编程难点:视线坐标系与参考坐标系间的转换关系 一、采用本文方法结果 二、偏航通道采用增广比例导引律

算法小站 2393

线性回归LinearRegression

对视频中线性回归算法的相关内容进行总结与记录 文章目录一、理论基础二、实例2.1 一元线性回归2.1.1 推导过程2.1.2 代码实现(基于numpy)2.1.3 代码实现(基于sklearn)2.2 多元线性回归2.2.1 代码实现(基于numpy)2.2.2 代码实现(基于sklearn) 一、理论基础 回归 通常是指利用某个函数,尽可能把数据样本点“串”在一起,用于描述输入变量和输出变量间的变化关系 线性回归 特点:用来把数据“串”起来的那个函数是线性的 (一元线性回归(一个自变量) &a.

邱邱邱的博客 1068

Spring AOP 之 通知、连接点、切点、切面。

1:知识背景 软件系统可以看成是由一组关注点组成的,其中,直接的业务关注点,是直切关注点。而为直切关注点提供服务的,就是横切关注点。 2:面向切面的基本原理什么是面向切面编程 横切关注点:影响应用多处的功能(安全、事务、日志) 切面: 横切关注点被模块化为特殊的类,这些类称为切面 优点: 每个关注点现在都集中于一处,而不是分散到多处代码中 服务模块更简洁,服务模块只需关注核心代

github_34889651的博客 3万+

ClickHouse分布式表原理:大数据分片存储与查询

我是一名资深大数据工程师,专注于ClickHouse优化和分布式架构设计。拥有5年以上大数据开发经验,曾为多家电商、金融公司提供ClickHouse解决方案。欢迎关注我的博客(),一起探讨大数据技术!留言互动:你在使用ClickHouse分布式表时遇到过什么问题?欢迎在评论区分享,我会一一解答!

AI大模型应用之禅 959

【Spring AOP】什么是AOP?切点、连接点、通知和切面

AOP 概述与 Spring AOP 详解 AOP(面向切面编程)是 Spring 框架的第二大核心,是一种面向特定方法编程的思想,通过集中处理某一类问题实现解耦。Spring AOP 是其一种实现方式,相比拦截器能更细致地拦截方法(按包、类、方法等),典型应用如接口耗时统计。 核心概念 切点(Pointcut):定义拦截规则的表达式(如 execution(* com.example.controller.*.*(..)))。 连接点(Join Point):满足切点表达式的方法(如 Controller

Yeeear的博客 2204

【原理图PCB专题】案例:双排0.5mm间距座子转单排0.5mm间距座子Layout方案分析

本文提供一种分析思路,并通过实际案例来进行Layout方案分析的讲解。

一点硬件 456

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Spring】面向切面编程详解(AOP)

①AOP(Aspect Oriented Program)即面向切面编程。我们先回顾以下三层架构,三层架构式垂直架构,即一层对另一层提供服务,不能越级访问,分级进行运作。上述架构是垂直分布的,而面向切面则是一个切面:②到底是什么切面呢?就是把各种类中冗余的代码提取出来,在需要用的时候就横向切入,就像一个切面一样。到底是什么冗余代码呢?事务处理、异常处理等等!突然来一大堆听不懂。③举个栗子:比如说事务控制,在我们的业务中,虽然查询是最多的,但是添加、修改、删除也不少。

未来可以改变 6720

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【Spring AOP(面向切面)切点、切面和通知介绍以及应用】

切点定义了在哪些连接点(Join Point)上应用切面逻辑。连接点是程序执行过程中的一些特定的点,例如方法调用、方法执行、构造函数调用等。切点通过表达式来精确地指定这些位置。在 Spring AOP 中,通常使用 AspectJ 切点表达式来定义。例如,通过execution(* com.example.service…(…))这样的表达式,可以指定在com.example.service包及其子包下的所有类的所有方法上应用切面逻辑。

weixin_56693899的博客 2713

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

!Spring Aop中四个重要概念,切点,切面,连接点,通知

一、基本概念 1. 通知: 就是我们编写的希望Aop时额外执行的那个方法。我们通过Aop希望我们编写的方法在目标方法执行前执行,或者执行后执行。 2. 切点:切点就是我们配置的满足我们条件的目标方法。比如我们规定:名字前面是select开头的才执行我们自定义的通知方法。那么这些select开头的方法就是切点。 3. 连接点:连接点可以说是切点的全集。切点是连接点的子集。也可以理解为,连接点是我们...

sinolover的专栏 9148

spring19--AOP的开发,带切点的切面和不带切点的切面

通过配置生成代理,Spring基于ProxyFactoryBean类.底层自动选择使用JDK的动态代理还是CGLIB的代理. 带有切点的切面要实现的接口和实现类: PointcutAdvisor 接口: DefaultPointcutAdvisor 最常用的切面类型,它可以通过任意Pointcut和Advice 组合定义切面 RegexpMethodPointcutAdvisor 构造正则...

月落孤城的博客 506

这篇文章带你弄懂AOP,切面,切点,通知,连接点

这篇文章介绍了AOP是什么以及AOP中一些重要概念并且还介绍了AOP概念在Spring Boot项目中的使用。

m0_51821434的博客 1896

Spring AOP中定义切点PointCut详解

1、AOP是什么? 软件工程有一个基本原则叫做“关注点分离”(Concern Separation),通俗的理解就是不同的问题交给不同的部分去解决,每部分专注于解决自己的问题。这年头互联网也天天强调要专注嘛! 这其实也是一种“分治”或者“分类”的思想,人解决复杂问题的能力是有限的,所以为了控制复杂性,我们解决问题时通常都要对问题进行拆解,拆解的同时建立各部分之间...

zzhongcy的专栏 1万+
上一篇: Spring中的AOP基础
下一篇: result结果类型
pseudonym_
博客等级 码龄10年 88粉丝 205原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值