一、前置增强

  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. Quartznet速记

    参与 https://www.cnblogs.com/lzrabbit/archive/2012/04/14/2371420.html 1.XML配置 参考:https://www.cnblogs.c ...

  2. Chrome 开发者工具实用操作

    Chrome 开发者工具实用操作 https://umaar.com/dev-tips/

  3. 解决Android Screen Monitor在android8.0及以上系统报错:"E/Screenshot: Unsupported protocol: 2"

    1.打开命令窗口,切换到 asm.jar 所在目录,执行 java -jar asm.jar,正常情况下打开后连接上设备会显示出画面 2.但是在android8.0以上系统该asm.jar包就无法正常 ...

  4. 更改路由器的外网IP

    此方法适用于通过路由器拨号上网的宽带,若宽带通过光猫拨号上网则需要将光猫改为桥接模式并在路由器中配置宽带账号和密码 测试环境: 路由器:TP-LINK TL-WDR7800千兆版 硬件版本:1.0 软 ...

  5. gitlab-CI作业-yml

    stages: - build - deploy before_script: - echo "Restore NuGet Packages..." - echo "do ...

  6. 【洛谷5644】[PKUWC2018] 猎人杀(容斥+生成函数+分治NTT)

    点此看题面 大致题意: 有\(n\)个人相互开枪,每个人有一个仇恨度\(a_i\),每个人死后会开枪再打死另一个还活着的人,且第一枪由你打响.设当前剩余人仇恨度总和为\(k\),则每个人被打中的概率为 ...

  7. IDEA生成可执行的jar文件

    场景 用IDEA开发一个Java控制台程序,项目完成后,打包给客户使用. 做法 首先用IDEA打开要生成jar的项目,打开后选择File->Project Structure... 选择Arti ...

  8. Vue小练习 03

    """ 1.有以下广告数据(实际数据命名可以略做调整) ad_data = { tv: [ {img: 'img/tv/tv1.jpg', title: 'tv1'}, ...

  9. slave_master_info和slave_relay_log_info中的Master_log_pos不一致

    最近在研究mysql的主从,发现一个问题,我在主库做任何修改时,在从库中只有slave_relay_log_info中的Master_log_pos在变化,而slave_master_info中的Ma ...

  10. PHP制作的掷色子点数抽奖游戏实例

    PHP制作的掷色子点数抽奖游戏实例,通过掷色子点数来达到抽奖的效果,为抽奖活动增添一些趣味性. 我们将在html页面中写下如下的html结构代码,.wrap用来放置色子和提示信息,#prize则是用来 ...