静态普通方法名匹配切面
来源:互联网 发布:java疯狂讲义txt下载 编辑:程序博客网 时间:2024/06/10 22:44
1、目标类
public class Seller {public void greetTo(String name) {System.out.println("seller greet to "+name+"...");}}
public class Waiter {public void greetTo(String name) {System.out.println("waiter greet to "+name+"...");}public void serveTo(String name){System.out.println("waiter serving "+name+"...");}}
2、增强类
public class GreetingBeforeAdvice implements MethodBeforeAdvice {public void before(Method method, Object[] args, Object obj) throws Throwable {String clientName = (String)args[0];System.out.println(obj.getClass().getName()+"."+method.getName());System.out.println("How are you!Mr."+clientName+".");}}
3、代理类
public class GreetingAdvisor extends StaticMethodMatcherPointcutAdvisor {public boolean matches(Method method, Class clazz) {return "greetTo".equals(method.getName());} /* * 在默认的情况下,StaticMethodMatcherPointcutAdvisor抽象类匹配 * 所有的类 */public ClassFilter getClassFilter() {return new ClassFilter() {public boolean matches(Class clazz) {return Waiter.class.isAssignableFrom(clazz);}};}}
4、配置文件
<!-- 普通方法名匹配切面 --><bean id="waiterTarget" class="com.baobaotao.advisor.Waiter" /><bean id="sellerTarget" class="com.baobaotao.advisor.Seller" /><bean id="greetingAdvice" class="com.baobaotao.advisor.GreetingBeforeAdvice" /><!-- 注入一个前置增强 --><bean id="greetingAdvisor" class="com.baobaotao.advisor.GreetingAdvisor"p:advice-ref="greetingAdvice" /> <!-- 因为需要为waiter和seller两个Bean定义代理器,两者有许多的共同配置信息,使用父Bean简化配置 --><bean id="parent" abstract="true"class="org.springframework.aop.framework.ProxyFactoryBean"p:interceptorNames="greetingAdvisor" p:proxyTargetClass="true" /><!-- 引用父Bean定义了两个切面的代理 --><bean id="waiter" parent="parent" p:target-ref="waiterTarget" /><bean id="seller" parent="parent" p:target-ref="sellerTarget" />
5、测试类
String configPath = "com/baobaotao/advisor/beans.xml";ApplicationContext ctx = new ClassPathXmlApplicationContext(configPath);Waiter waiter = (Waiter)ctx.getBean("waiter");Seller seller = (Seller)ctx.getBean("seller");waiter.greetTo("John");waiter.serveTo("John");seller.greetTo("John");
输出结果如下:
com.baobaotao.advisor.Waiter.greetToHow are you!Mr.John.waiter greet to John...waiter serving John...seller greet to John...
0 0
- 静态普通方法名匹配切面
- 静态普通方法名匹配切面
- Spring-AOP 静态普通方法名匹配切面
- 静态正则表达式方法匹配切面
- 静态正则表达式方法匹配切面
- Spring-AOP 静态正则表达式方法匹配切面
- 普通方法,静态方法和类方法
- Python普通方法、静态方法、类方法
- Python普通方法、静态方法、类方法
- python普通方法、类方法、静态方法
- day08_Python3的普通方法和静态方法
- 静态块 静态方法 构造方法 普通方法 执行顺序
- 类和方法名 静态
- 为什么java静态方法不能调用普通方法?普通方法能调用静态方法?
- spring 面向切面编程,在执行SQL时打印类名及方法名
- python类中普通方法,类方法,静态方法
- python中的普通方法、类方法和静态方法
- python的普通方法、类方法和静态方法
- vagrant 打包 box
- 循环-23. 找完数(20)
- 黑马程序员-线程
- 攀比心
- 结构体字节对齐
- 静态普通方法名匹配切面
- 2.1.11 Remove Element
- SAP OTR 字段维护 更改SAP的字段翻译
- POJ 1273 Drainage Ditches 网络流基础
- 完整导出IntelliJ IDEA的快捷键
- .net环境搭建顺序
- OC之Cagegory, Extension, Protocol协议
- spring mvc访问webinf目录下的jsp
- 静态正则表达式方法匹配切面