知识大全 Spring AOP之Hello World
Posted 知
篇首语:最聪明的处世之术是,既对世俗投以白眼,又与其同流合污。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Spring AOP之Hello World相关的知识,希望对你有一定的参考价值。
Spring AOP之Hello World 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
我们使用一个简单的例子来演示一下Spring中的AOP 这是一个log的例子 实际上log是一个对于AOP来说很不好的例子 这里我们只为说明Spring AOP的使用 首先我们来创建一个自己的interceptor 这个类必须继承 aopalliance intercept MethodInterceptor接口 Spring的AOP框架就是参照aopalliance这个标准实现的 所以我们的MyInterceptor要继承这个标准中的接口 这个接口只有一个要求实现的方法 public Object invoke(MethodInvocation methodInvocation) throws Throwable; 下面是我们的MyIntercptor public class MyInterceptor implements MethodInterceptor private final Log logger = LogFactory getLog(getClass()); public Object invoke(MethodInvocation methodInvocation) throws Throwable ( Beginning method ( ): + methodInvocation getMethod() getDeclaringClass() + + methodInvocation getMethod() getName() + () ); long startTime = System currentTimeMillis(); try Object result = methodInvocation proceed(); return result; finally ( Ending method ( ): + methodInvocation getMethod() getDeclaringClass() + + methodInvocation getMethod() getName() + () ); ( Method invocation time ( ): + (System currentTimeMillis() startTime) + ms ); 对于上面的代码需要说明的是下面两行代码 Object result = methodInvocation proceed(); return result; 整个程序的流程是这样的 先是执行在Object result = methodInvocation proceed();前面的代码 接着执行Object result = methodInvocation proceed(); 它把执行控制权交给了interceptor stack(拦截器栈)内的下一个interceptor 如果没有了就交给真正的业务方法 然后执行return result;之前的代码 最后执行return result; 它把控制权交回它之上的interceptor 如果没有了就退出interceptor stack 写出我们的业务对象及其接口 为了方便我们的业务接口只有一个hello方法 public interface BusinessInterface public void hello(); 业务对象的代码如下 public class BusinessInterfaceImpl implements BusinessInterface public void hello() System out println( hello Spring AOP ); 接下来 我们来看看如何使用我们的写的interceptor 我们把业务对象作为AOP的target <bean id= businessTarget class= rst spring testaop BusinessInterfaceImpl /> 接着在bean定义中声明interceptor <bean id= myInterceptor class= rst spring testaop MyInterceptor /> 最后 我们来声明真正的业务对象 通过使用它的接口以及Spring的ProxyFactoryBean <bean id= businessBean class= springframework aop framework ProxyFactoryBean > <property name= proxyInterfaces > <value> rst spring testaop BusinessInterface</value> </property> <property name= interceptorNames > <list> <value>myInterceptor</value> <value>businessTarget</value> </list> </property> </bean> 这里需要说明两点 proxyInterfaces 就是我们的业务对象的实际接口 interceptorNames 定义了所有interceptors的执行顺序 其中业务对象的target作为list的最后一个 记着一定要把业务对象的target放到list中 否则你的业务对象就不会工作 最后 写我们的测试类 ClassPathResource resource = new ClassPathResource( /rst/spring/testaop/aop_bean xml ); XmlBeanFactory beanFactory = new XmlBeanFactory(resource); BusinessInterface businessBean = (BusinessInterface) beanFactory getBean( businessBean ); businessBean hello(); 一切正常就可以在log上看到相应的信息了 以下是附件源代码的执行效果 : : INFO Beginning method ( ): interface rst spring testaop BusinessInterface hello() : : INFO Beginning method ( ): interface rst spring testaop BusinessInterface hello() hello Spring AOP : : INFO Ending method ( ): interface rst spring testaop BusinessInterface hello() : : INFO Ending method ( ): interface rst spring testaop BusinessInterface hello() : : INFO Method invocation time ( ): ms 源代码需要spring jar aopallience jar mons logging jar cha138/Article/program/Java/ky/201311/28872相关参考
知识大全 VB.Net编程入门之Hello World(2)
VB.Net编程入门之HelloWorld(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 VB.Net编程入门之Hello World(4)
VB.Net编程入门之HelloWorld(4) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 VB.Net编程入门之Hello World(3)
VB.Net编程入门之HelloWorld(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java技巧:HelloWorldAnt 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Anot
SpringAOP详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 此前对于AOP的使用仅限于
浅析Spring.net中的Aop使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
Spring事务处理及其AOP框架的内幕 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ***注
开源技术分析:AOP和Spring事务处理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一为什
Spring3.0中的AOP配置方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 第一种配置方
spring的aop机制提供两类方式实现类代理一种是单个代理一种是自动代理 单个代理通过ProxyFactoryBean来实现自动代理通过BeanNameAutoProxyCreator或者De