一、前置增强

  1、IdoSomeService

    

  2、IdoSomeServiceImpl类实现IdoSomeService接口

    

  3、MyBeforeAdvice 实现前置增强方法

    

  4、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"
xmlns:p="http://www.springframework.org/schema/p"
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-->
<bean id="idoSomeService1" class="cn.spring.proxyfactory.IdoSomeServiceImpl"></bean>
<!--增强:切面-->
<bean id="myBeforeAdvice" class="cn.spring.proxyfactory.MyBeforeAdvice"></bean>
<!--使用代理工厂实现增强-->
<bean id="proxyFactory1" class="org.springframework.aop.framework.ProxyFactoryBean">
<!--将增强和业务织入到一起-->
<property name="target" ref="idoSomeService1"></property>
<!--拦截增强类-->
<property name="interceptorNames" value="myBeforeAdvice"></property>
<!--更换代理方式 proxyTargetClass默认值为false 即JDK动态代理,但是当目标对象没有接口时,自动改为CGLIB-->
<property name="proxyTargetClass" value="true"></property>
</bean>
</beans>

  5、测试类

    

  6、控制台

    

二、环绕增强

  1、IdoSomeService

    

  2、IdoSomeServiceImpl类实现IdoSomeService接口

    

  3、MyAroundAdvice 实现环绕增强方法

    

  4、applicationContext.xml配置文件   

 <!--环绕增强实现-->
<!--注入业务Bean-->
<bean id="idoSomeService2" class="cn.spring.around.IdoSomeServiceImpl"></bean>
<!--增强:切面-->
<bean id="myAroundAdvice" class="cn.spring.around.MyAroundAdvice"></bean>
<!--使用代理工厂实现增强-->
<bean id="proxyFactory2" class="org.springframework.aop.framework.ProxyFactoryBean">
<!--将增强和业务织入到一起-->
<property name="target" ref="idoSomeService2"></property>
<!--拦截增强类-->
<property name="interceptorNames" value="myAroundAdvice"></property>
<!--更换代理方式 proxyTargetClass默认值为false 即JDK动态代理,但是当目标对象没有接口时,自动改为CGLIB-->
<property name="proxyTargetClass" value="true"></property>
</bean>

  5、测试类

    

  

  6、控制台

    

三、异常增强 

  1、IdoSomeService

    

 

  2、IdoSomeServiceImpl类实现IdoSomeService接口

    

  

  3、MyThrowAdvice实现异常增强

    

  4、applicationContext.xml配置文件

<!--异常增强实现-->
<!--注入业务Bean-->
<bean id="idoSomeService3" class="cn.spring.throwadvice.IdoSomeServiceImpl"></bean>
<!--增强:切面-->
<bean id="myThrowAdvice" class="cn.spring.throwadvice.MyThrowAdvice"></bean>
<!--使用代理工厂实现增强-->
<bean id="proxyFactory" class="org.springframework.aop.framework.ProxyFactoryBean">
<!--将增强和业务织入到一起-->
<property name="target" ref="idoSomeService3"></property>
<!--拦截增强类-->
<property name="interceptorNames" value="myThrowAdvice"></property>
<!--更换代理方式 proxyTargetClass默认值为false 即JDK动态代理,但是当目标对象没有接口时,自动改为CGLIB-->
<property name="proxyTargetClass" value="true"></property>
</bean>

  5、测试类

   

  6、控制台   

   

四、最终增强

  1、IdoSomeService

    

 

  2、IdoSomeServiceImpl类实现IdoSomeService接口

    

  

  3、MyThrowAdvice实现最终增强

    

  4、applicationContext.xml配置文件

<!--最终增强实现-->
<!--注入业务Bean-->
<bean id="idoSomeService4" class="cn.spring.throwadvice.IdoSomeServiceImpl"></bean>
<!--增强:切面-->
<bean id="myThrowAdvice1" class="cn.spring.throwadvice.MyThrowAdvice"></bean>
<aop:config>
<aop:pointcut id="pointcut" expression="execution(* *..throwadvice.*.*(..))"/>
<aop:aspect ref="myThrowAdvice1">
<aop:after-throwing method="afterThrowing" throwing="ex" pointcut-ref="pointcut"></aop:after-throwing>
<aop:after method="afterAdvice" pointcut-ref="pointcut"></aop:after>
</aop:aspect>
</aop:config>

  5、测试类

    

  6、控制台

   

Spring的增强模式的更多相关文章

  1. Spring4.1新特性——Spring MVC增强

    目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异 ...

  2. spring通过工厂模式解决页面耦合问题

    spring通过工厂模式解决页面耦合问题

  3. hyper-v安装虚拟机ubuntu 18.04 64bit后无法使能增强模式怎么办

    1.获取脚本来使能增强模式 $ sudo apt-get update $ sudo apt install git $ git clone https://github.com/jterry75/x ...

  4. 跟Evan学Sprign编程思想 | Spring注解编程模式【译】

    Spring注解编程模式 概况 多年来,Spring Framework不断发展对注解.元注解和组合注解的支持. 本文档旨在帮助开发人员(Spring的最终用户以及Spring Framework和S ...

  5. Spring AOP /代理模式/事务管理/读写分离/多数据源管理

    参考文章: http://www.cnblogs.com/MOBIN/p/5597215.html http://www.cnblogs.com/fenglie/articles/4097759.ht ...

  6. Java进阶知识20 Spring的代理模式

    本文知识点(目录): 1.概念  2.代理模式      2.1.静态代理      2.2.动态代理      2.3.Cglib子类代理 1.概念 1.工厂模式  2. 单例模式 代理(Proxy ...

  7. 基于XML配置的spring aop增强配置和使用

    在我的另一篇文章中(http://www.cnblogs.com/anivia/p/5687346.html),通过一个例子介绍了基于注解配置spring增强的方式,那么这篇文章,只是简单的说明,如何 ...

  8. spring的代理模式

    静态代理: 首先定义一个接口,随便写一个方法 定义2个实现接口的方法 (被代理的对象) (代理对象) 需要将接口 定义get set 方法 代理增强的方法 然后实现 输出结果如下: 动态代理(jdk动 ...

  9. Spring中Template模式与callback的结合使用浅析

    Spring不论是与ibatis,还是与Hibernate的结合中,都使用到了Template模式与callback技术,来达到简化代码实现的目的.Template模式也即模板模式,用于对一些不太变化 ...

随机推荐

  1. selenium-server-standalone下载网站

    http://selenium-release.storage.googleapis.com/index.html

  2. 【洛谷5369】[PKUSC2018] 最大前缀和(状压DP)

    点此看题面 大致题意: 对于一个序列,求全排列下最大前缀和之和. 状压\(DP\) 考虑如果单纯按照题目中对于最大前缀和的定义,则一个序列它的最大前缀和是不唯一的. 为了方便统计,我们姑且规定,如果一 ...

  3. 解决IDEA中的DashBoard 不显示端口号

    第一步:找到.idea目录下的workspace.xml文件 第二步:找到下图位置 并添加红色部分代码 添加代码如下: <option name="configurationTypes ...

  4. 阿里钉钉技术分享:企业级IM王者——钉钉在后端架构上的过人之处

    本文引用了唐小智发表于InfoQ公众号上的“钉钉企业级IM存储架构创新之道”一文的部分内容,收录时有改动,感谢原作者的无私分享. 1.引言 业界的 IM 产品在功能上同质化较高,而企业级的 IM 产品 ...

  5. (五十七)c#Winform自定义控件-传送带(工业)-HZHControls

    官网 http://www.hzhcontrols.com 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kww ...

  6. (转)简单移动平均线(Simple Moving Average,SMA) 定义及使用

    原文链接:https://blog.csdn.net/Enjolras_fuu/article/details/88602309   扩展:https://www.investopedia.com/t ...

  7. Java中15种锁的分类综合总结

    本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...

  8. Access Grid Control Properties 访问网格控件属性

    In this lesson, you will learn how to access the properties of a list form's Grid Control in WinForm ...

  9. PostgreSQL 修改表字段常用命令

    --数据库.模式.表名 "identities"."Test"."tab_test" --修改字段名 ALTER TABLE "i ...

  10. JS 对象定义

    JS 对象 JavaScript 中的所有事物都是对象:字符串.数值.数组.函数... 此外,JavaScript 允许自定义对象. JavaScript 对象 JavaScript 提供多个内建对象 ...