- 浏览: 340184 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (212)
- spring (21)
- design pattern(java) (12)
- linux-shell (28)
- java-thread (20)
- java-collection (6)
- java-reflect (9)
- mysql (11)
- java-io (7)
- java-util&lang&io (3)
- algorithm (3)
- interview (2)
- tools-eclipse (2)
- tools-maven (1)
- web-script (1)
- java组建 (13)
- 博客收藏 (1)
- 架构设计与实践 (10)
- active-mq (6)
- java-jvm&性能&原理 (27)
- tomcat (2)
- flume (1)
- serialization (2)
- git (1)
- cache&redis (8)
- guava (1)
- zookeeper (3)
- socket&tcp&udp&http (6)
- test (1)
最新评论
-
bbls:
有用有用有用
java-jvm-jstack-(监视器和锁的概念) -
王新春:
小侠有点帅哦 写道此流怎么关闭新春这个实现 可以不关闭的,哈哈 ...
源码剖析之java.io.ByteArrayOutputStream -
小侠有点帅哦:
此流怎么关闭新春
源码剖析之java.io.ByteArrayOutputStream -
cumt168:
写的很好为什么初始化参数,年轻代-Xmn10M def new ...
jvm之内存申请过程分析 -
ronin47:
应该是跟共享域名思路差不多,根据cookie的key作判断
跨域:一种通过服务端解决跨域的实现
AOP概念:面向切面编程。
spring 集成AOP:
1、spring 有自己的aop实现ProxyFactory ,和 ProxyFactoryBean 。
2、spring 集成AspectJ实现的Aop。
spring AOP的使用场景:
在spring中 事务处理和rpc调用都大量的使用了aop,在低入侵监控方面都有大量应用。
spring以来的底层技术:Jdk代理和Cglib代理技术。
spring 支持的aop应用实现方式有以下几种:
1、基于ProxyFactory 的编程方式的aop实现。
2、基于ProxyFactoryBean 配置的,走spring ioc 路的实现方式。
3、基于以上方式自动创建代理 BeanNameAutoProxyCreator +Advice 和 DefaultAdvisorAutoProxyCreator + Advisor方式。
4、基于AspectJProxyFactory + AspectJ注解的编程的方式。
5、基于AspectJ 注解 + AnnotationAwareAspectJAutoProxyCreator的方式。
6、基于Schema + Aspectj注解语言的 Aop:config方式。
下面举例 基于AspectJ 注解的方式,实现一个方法耗时统计的功能:
定义需要代理的业务方法
定义切面
applicationContext.xml 配置启动AspectJ
测试用例
具体实现看附件~
spring 集成AOP:
1、spring 有自己的aop实现ProxyFactory ,和 ProxyFactoryBean 。
2、spring 集成AspectJ实现的Aop。
spring AOP的使用场景:
在spring中 事务处理和rpc调用都大量的使用了aop,在低入侵监控方面都有大量应用。
spring以来的底层技术:Jdk代理和Cglib代理技术。
spring 支持的aop应用实现方式有以下几种:
1、基于ProxyFactory 的编程方式的aop实现。
2、基于ProxyFactoryBean 配置的,走spring ioc 路的实现方式。
3、基于以上方式自动创建代理 BeanNameAutoProxyCreator +Advice 和 DefaultAdvisorAutoProxyCreator + Advisor方式。
4、基于AspectJProxyFactory + AspectJ注解的编程的方式。
5、基于AspectJ 注解 + AnnotationAwareAspectJAutoProxyCreator的方式。
6、基于Schema + Aspectj注解语言的 Aop:config方式。
下面举例 基于AspectJ 注解的方式,实现一个方法耗时统计的功能:
/** * aspectj 基于注解的方式 * @author wangxinchun */ public @interface MethodExecuteTimes {}
定义需要代理的业务方法
@Service public class LoginService implements ILoginService { @MethodExecuteTimes public void regist(String username, String password, String email, int age) { System.out.println(Arrays.toString(new Object[]{username,password,age})); } }
定义切面
package org.job.user.aop; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component; /** * 定义切面 (关注方法上有注解:org.job.user.MethodExecuteTimes) * @author wangxinchun */ @Aspect @Component public class RegisterMonitorAspectj { public static final ThreadLocal<Long> time = new ThreadLocal<Long>(); /** 方法调用前执行*/ @Before("@annotation(org.job.user.MethodExecuteTimes))") public void before() { time.set(System.currentTimeMillis()); System.out.println("invoke before "); } /** 方法调用后执行(如果方法抛出异常,此方法不会执行)*/ @AfterReturning("@annotation(org.job.user.MethodExecuteTimes))") public void after() { System.out.println("invoke after "); System.out.println("times : "+(System.currentTimeMillis() - time.get())); } /** 方法调用finally 执行*/ @After("@annotation(org.job.user.MethodExecuteTimes))") public void _final(){ System.out.println("final"); } }
applicationContext.xml 配置启动AspectJ
<!-- <aop:aspectj-autoproxy/> --> <bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator"/>
测试用例
@Test public void testRegister() { LoginService loginService = new LoginService(); AspectJProxyFactory factory = new AspectJProxyFactory(); factory.setTarget(loginService); factory.addAspect(RegisterMonitorAspectj.class); ILoginService proxy = factory.getProxy(); proxy.regist("admin", "123456","xinchun.wang@qunar.com",10); }
具体实现看附件~
- spring-aop-aspectj.rar (387.6 KB)
- 下载次数: 3
发表评论
-
mvc-HandlerMapping
2017-06-03 23:13 832HandlerMapping:定义了web请求映射和处 ... -
spring-transaction-basic
2016-12-26 19:18 401Spring的事务本身是基于AOP的 AOP代理自 ... -
spring-transaction-propagation
2016-11-25 21:00 846Spring 事务:是spring 通过 aop实现的一套 ... -
spring bean & id
2016-11-25 17:57 454首先澄清一个概念: 同名bean:多个bean ... -
spring 父子容器
2016-11-25 17:11 3639特殊说明: ContextLoaderListe ... -
spring-mvc-基础
2016-09-26 15:03 387核心入口功能定位: HttpServletBean:完成的是& ... -
spring-mvc 学习资料
2016-09-20 15:42 351http://docs.spring.io/spring-fr ... -
spring-aop-DefaultAdvisorAutoProxyCreator
2016-08-16 19:50 463ProxyFactory:手工编程实现AOP,编程式 添加ad ... -
spring-aop基本概念
2016-07-26 16:37 822AOP词汇: Joinpoint:在程序执行过程中某个特定的 ... -
spring-扩展点-BeanFactoryPostProcessor
2016-06-15 18:15 6001BeanFactoryPostProcessor:允许自定 ... -
spring-扩展点-BeanPostProcessor
2016-06-14 15:02 1553理解spring中一个bean的初始化过程非常重要,很多基础功 ... -
spring-扩展点-namespacehandler(Spring自定义标签)
2016-05-27 11:31 2206在很多情况下,我们需要为系统提供可配置化支持,简单的做法可以直 ... -
spring 资源文件
2015-04-03 00:07 148【转载】 非原创 SpringMVC访问静态资源的三种方式 ... -
spring-master-slave-commondao
2014-07-19 14:32 2238互联网的web项目,都有个特点:请求的并发量高,其中请求最耗时 ... -
spring-jdbc-RoutingDataSource
2014-07-11 17:33 5455spring jdbc 提供了抽象类AbstractRouti ... -
spring-aop-ProxyFactoryBean 源码分析
2014-06-13 19:10 2028在阅读本篇之前,请先阅读http://wangxinchun. ... -
spring-aop-ProxyFactory 源码分析
2014-06-13 02:22 4769spring 提供的编程式aop实现,即通过 ProxyFac ... -
spring-aop-aspectj(Schema)-case
2014-05-31 15:50 1085基于Schema 配置切面: 1、切点定义的语言依然是Aspe ... -
spring-rpc-case
2014-05-17 23:34 1087spring 提供了基本的基于http协议的rpc,同时提供了 ... -
spring-mvc-case
2014-05-10 23:50 1189spring mvc 是当前java比较流行的一种mvc架构, ...
相关推荐
spring-aop-1.1.1.jar spring-aop-1.2.6.jar spring-aop-1.2.9.jar spring-aop-2.0.2.jar spring-aop-2.0.6.jar spring-aop-2.0.7.jar spring-aop-2.0.8.jar spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-...
赠送jar包:spring-aop-5.2.0.RELEASE.jar; 赠送原API文档:spring-aop-5.2.0.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.2.0.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.2.0.RELEASE.pom;...
开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE...
赠送jar包:spring-aop-5.0.8.RELEASE.jar; 赠送原API文档:spring-aop-5.0.8.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.0.8.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.0.8.RELEASE.pom;...
总结起来,"spring-aop-jar"涉及了Spring框架中的面向切面编程模块,包括Spring AOP和AspectJ的集成。通过理解和熟练使用这些组件,开发者可以有效地解耦关注点,提高代码的可维护性和可扩展性。在实际项目中,结合...
赠送jar包:spring-aop-5.0.10.RELEASE.jar; 赠送原API文档:spring-aop-5.0.10.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.0.10.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.0.10.RELEASE....
赠送jar包:spring-aop-5.3.10.jar; 赠送原API文档:spring-aop-5.3.10-javadoc.jar; 赠送源代码:spring-aop-5.3.10-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.3.10.pom; 包含翻译后的API文档:spring...
赠送jar包:spring-aop-5.3.12.jar; 赠送原API文档:spring-aop-5.3.12-javadoc.jar; 赠送源代码:spring-aop-5.3.12-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.3.12.pom; 包含翻译后的API文档:spring...
spring-aop-6.0.2.jar
赠送jar包:spring-aop-5.2.15.RELEASE.jar; 赠送原API文档:spring-aop-5.2.15.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.2.15.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.2.15.RELEASE....
spring-aop-5.2.0.RELEASE
spring-aop-3.2.5.RELEASE.jar
spring-aop-5.3.22.jar Spring AOP provides an Alliance-compliant aspect-oriented programming implementation allowing you to define method interceptors and pointcuts to cleanly decouple code that ...
赠送jar包:spring-aop-4.3.20.RELEASE.jar 赠送原API文档:spring-aop-4.3.20.RELEASE-javadoc.jar 赠送源代码:spring-aop-4.3.20.RELEASE-sources.jar 包含翻译后的API文档:spring-aop-4.3.20.RELEASE-...
赠送jar包:spring-aop-5.1.3.RELEASE.jar; 赠送原API文档:spring-aop-5.1.3.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.1.3.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.1.3.RELEASE.pom;...
spring-aop-3.2.0.RELEASE.jar,一个Spring中AOP的jar包
spring-aop-4.0.4.RELEASE 的jar包,亲测可用。。。。
spring-aop-5.0.4.RELEASE.jar。
spring-**core**-4.3.6.RELEASE.jar :包含spring框架基本的核心工具类,spring其他组件都要用到这个包里的类,其他组件的基本核心 spring-**beans**-4.3.6.RELEASE.jar:所有应用都要用到的jar包,它包含访问配置...