AOP中自己写了一个切点,还有一个方法前通知,其中代码是这样的:
前置通知:
package advice;
import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class beforeadvice implements MethodBeforeAdvice {
public void before(Method arg0, Object[] arg1, Object arg2)
throws Throwable {
// TODO Auto-generated method stub
System.out.println(arg2.getClass().getName()+"----"+arg0.getName()+"----"+"前置增强完成");
}
}
切点:
package advice;
import java.lang.reflect.Method;
import org.springframework.aop.ClassFilter;
import org.springframework.aop.support.StaticMethodMatcherPointcutAdvisor;
public class greetingadvisor extends StaticMethodMatcherPointcutAdvisor {
public boolean matches(Method arg0, Class arg1) {
// TODO Auto-generated method stub
return "greetto".equals(arg0.getName());
}
}
目标类:
package advice;
public class naivewaiter implements waiter {
public void greetto(String name) {
// TODO Auto-generated method stub
System.out.println("greet to "+name);
}
public void serveto(String name) {
//TODO Auto-generated method stub
System.out.println("serving "+name);
}
}
配置文件:
<bean id="beforeAdvice" class="advice.beforeadvice"></bean>
<bean id="greetingadvisor" class="advice.greetingadvisor" >
<property name="advice" ><ref bean="beforeAdvice"/></property>
</bean>
<bean id="nwaiter" class="advice.naivewaiter"></bean>
<bean id="waiter" class="org.springframework.aop.framework.ProxyFactoryBean" >
<property name="proxyInterfaces">
<value>advice.waiter</value>
</property>
<property name="interceptorNames">
<list>
<value>beforeAdvice</value>
</list>
</property>
<property name="target" ref="nwaiter"/>
</bean>
目标类接口:
package advice;
public interface waiter {
void greetto(String name);
void serveto(String name);
}
主函数:
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
//sell sell1=(sell)ctx.getBean("s");
waiter w=(waiter)ctx.getBean("waiter");
w.greetto("yinfan");
w.serveto("xiaoqiang")
问题1:
为什么我这样一个方法前通知结果打印了三跳语句啊?
结果是:
$Proxy0----greetto----前置增强完成
$Proxy0----greetto----前置增强完成
advice.naivewaiter----greetto----前置增强完成
greet to yinfan
serving xiaoqiang
问题2:
waiter w=(waiter)ctx.getBean("waiter");
这里的waiter 是接口,我换成实现接口的类就不行了?这个是为什么呢?是不是这里必须要用接口啊?
问题3:
配置文件中全部都用的JDK代理,要是我换成CGLIB代理就说finanl不能继承~~~~~~~这个是为什么呢?
希望高手帮我看哈嘛 谢谢~~~~~~~~
分享到:
相关推荐
spring高手之路22spring高手之路22spring高手之路22spring高手之路22spring高手之路22spring高手之路22spring高手之路22spring高手之路22spring高手之路22spring高手之路22spring高手之路22spring高手之路22spring...
《Spring程序高手秘芨》是一本深度探讨Spring框架的书籍,其原代码提供了丰富的实践示例,帮助读者深入理解Spring的核心特性和高级用法。在本文中,我们将围绕Spring框架的关键知识点进行详细阐述,以便您更好地掌握...
2024最新版Spring高手之路指南2024最新版Spring高手之路指南2024最新版Spring高手之路指南2024最新版Spring高手之路指南2024最新版Spring高手之路指南2024最新版Spring高手之路指南2024最新版Spring高手之路指南2024...
"Spring高手之路"是一个相对宽泛且深入的话题,因为Spring框架本身就是一个庞大而复杂的生态系统,涵盖了从基础的依赖注入(DI)和面向切面编程(AOP)到更高级的数据访问、消息传递、安全、Web开发等多个方面。...
Spring源代码解析(一)Spring中的事务处理.doc Spring源代码解析(二):ioc容器在Web容器中的启动.doc Spring源代码分析(三):Spring JDBC.doc Spring源代码解析(四):Spring MVC.doc Spring源代码解析(五):Spring ...
关于“Spring高手之路23”的具体内容,由于我无法直接访问或预知未来的文章内容,且目前公开的信息中并未直接提及“Spring高手之路23”的具体标题和内容,因此我将基于Spring框架的相关知识和趋势,为您概述可能包含...
"Spring高手之路"是一个广泛的话题,涵盖了Spring框架的多个方面,包括其核心功能、最佳实践、高级特性以及与其他技术和框架的集成。虽然“Spring高手之路21”这个具体标题可能是一个特定的课程、书籍章节或者讲座的...
在开发基于Spring Boot和Spring Cloud的应用程序时,经常会遇到各种挑战,其中之一就是“unknown”问题。这通常出现在IDEA环境中,意味着系统无法正确识别或解析某些依赖或配置。本篇文章将详细探讨这个问题,并提供...
Spring专家力作 理论与实践完美结合 问题描述→解决方案→实现方法 第一部分 核心概念 第1章 控制反转和容器 1.1 使用容器管理组件 1.1.1 问题描述 1.1.2 解决方案 1.1.3 实现方法 ...
... spring高手之路24 spring高手之路24 spring高手之路24 spring高手之路24 spring高手之路24
关于“Spring高手之路22”的具体内容,由于这是一个较为特定的标题,且直接指向某个具体的文章或教程章节,而我没有直接访问或查看该特定内容的权限,因此无法直接提供该章节的详细内容。然而,我可以根据Spring框架...
Spring高手之路指南
spring高手之路21
spring高手之路23:Spring框架的学习路径和关键知识点,可以帮助你在Spring方面成为高手: 学习路径 基础知识 Java基础 Servlet/JSP JDBC Spring核心 IoC容器 依赖注入(DI) Bean的生命周期 Spring配置文件 AOP...
个人觉得spring3.2的源代码比较好编译,没啥脾气,像我之前下载的spring的最新版本源代码,还有spring4.0的源代码,不论是使用jdk1.6还是1.7甚至是1.8编译都出问题,结果还是觉得spring3.2编译过程轻松一点,配合...
Spring专家力作 理论与实践完美结合 问题描述→解决方案→实现方法 第一部分 核心概念 第1章 控制反转和容器 1.1 使用容器管理组件 1.1.1 问题描述 1.1.2 解决方案 1.1.3 实现方法 ...
在Spring框架的学习过程中,“Spring高手之路”可能是一个系列教程或专栏,旨在帮助开发者从基础到高级逐步掌握Spring框架的各个方面。尽管我无法直接引用“Spring高手之路22”的具体内容,但我可以根据Spring框架的...
https://github.com/doocs/technical-books.git spring高手之路23 spring高手之路23 spring高手之路23 spring高手之路23 spring高手之路23