spring AOP 前置增强,后置增强小Demo
来源:互联网 发布:什么漫画软件好 编辑:程序博客网 时间:2024/06/06 10:07
服务员接口 Waiter.java
package com.paic.zhangqi.spring.aop;public interface Waiter {void greetTo(String name);void serveTo(String name);}
服务员接口实现类 NaiveWaiter.java
package com.paic.zhangqi.spring.aop;public class NaiveWaiter implements Waiter {@Overridepublic void greetTo(String name) {System.out.println("greet to "+name+"...");}@Overridepublic void serveTo(String name) {System.out.println("serving "+name+"...");}}
前置增强类 GreetingBeforeAdvice.java 在目标类方法执行前执行
package com.paic.zhangqi.spring.aop;import java.lang.reflect.Method;import org.springframework.aop.MethodBeforeAdvice;public class GreetingBeforeAdvice implements MethodBeforeAdvice {@Overridepublic void before(Method method, Object[] args, Object obj) throws Throwable {String clientName = (String)args[0];System.out.println("How are you!Mr."+clientName+".");}}
后置增强类GreetingAfterAdvice.java在目标类方法调用后执行
package com.paic.zhangqi.spring.aop;import java.lang.reflect.Method;import org.springframework.aop.AfterReturningAdvice;public class GreetingAfterAdvice implements AfterReturningAdvice {@Overridepublic void afterReturning(Object arg0, Method arg1, Object[] arg2,Object arg3) throws Throwable {System.out.println("Please enjoy yourself!");}}
测试类 TestAdvice.java
package com.paic.zhangqi.spring.aop;import org.springframework.aop.AfterAdvice;import org.springframework.aop.BeforeAdvice;import org.springframework.aop.framework.ProxyFactory;public class TestAdvice {public static void main(String[] args) {Waiter target = new NaiveWaiter();BeforeAdvice beforeAdvice = new GreetingBeforeAdvice();AfterAdvice afterAdvice = new GreetingAfterAdvice();// spring 提供的代理工厂ProxyFactory pf = new ProxyFactory();// 设置代理目标pf.setTarget(target);// 为代理目标添加增强pf.addAdvice(beforeAdvice);pf.addAdvice(afterAdvice);// 生成代理实例Waiter proxy = (Waiter)pf.getProxy();proxy.greetTo("John");proxy.serveTo("Tomcat");}}
输出结果
How are you!Mr.John.greet to John...Please enjoy yourself!How are you!Mr.Tomcat.serving Tomcat...Please enjoy yourself!
使用配置文件进行配置 beans.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:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="greetingBefore" class="com.paic.zhangqi.spring.aop.GreetingBeforeAdvice" /><bean id="greetingAfter" class="com.paic.zhangqi.spring.aop.GreetingAfterAdvice" /><bean id="target" class="com.paic.zhangqi.spring.aop.NaiveWaiter" /><bean id="waiter" class="org.springframework.aop.framework.ProxyFactoryBean"><property name="proxyInterfaces" value="com.paic.zhangqi.spring.aop.Waiter" /><property name="interceptorNames" value="greetingBefore,greetingAfter" /><property name="target" ref="target" /></bean></beans>
对应的测试类 SpringConfigTest.java
package com.paic.zhangqi.spring.aop;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class SpringConfigTest {public static void main(String[] args) {String configPath = "com/paic/zhangqi/spring/aop/beans.xml";ApplicationContext ctx = new ClassPathXmlApplicationContext(configPath);Waiter waiter = (Waiter) ctx.getBean("waiter");waiter.greetTo("John");waiter.serveTo("Tomcat");}}
同样得到输出
How are you!Mr.John.greet to John...Please enjoy yourself!How are you!Mr.Tomcat.serving Tomcat...Please enjoy yourself!
0 0
- spring AOP 前置增强,后置增强小Demo
- Spring的aspectj的AOP操作(前置增强 后置增强 环绕)
- Spring-------- 增强(前置,后置,异常,环绕)
- spring AOP 环绕增强小Demo
- Spring AOP(2)- 后置增强 实现
- Spring-AOP 通过配置文件实现 后置增强
- SpringAOP 前置、后置、环绕增强
- Spring AOP(1)- 前置增强 实现
- Spring-AOP 通过配置文件实现 前置增强
- Spring关于增强(前置,后置,异常,环绕。。。)
- springAOP前置增强、后置增强、环绕增强(编程式)
- Spring AOP增强小例子
- Spring AOP增强小例子
- spring(四)前置增强
- 前置,后置,环绕,异常增强(示例)
- spring AOP详解之--前置增强 (MethodBeforeAdvice)
- 前置增强 ,后置增强,异常增强,环绕增强 静态代理,动态代理
- Spring AOP前置通知和后置通知
- Mobiscroll 2.15 去除Trial
- gcc: error trying to exec 'cc1': execvp: No such file or directory
- hdu4738 Caocao's Bridges(双连通分量割边/桥)
- python实现栅格计算器功能
- java线程锁 synchronized
- spring AOP 前置增强,后置增强小Demo
- Fault管理与自动化
- p123.30
- linux上 rlwrap安装
- C#记忆游戏的简单实现
- NYOJ_41 三个数从小到大排序
- P124第40题
- ArrayList类
- DesignPatterns_Visitor