
aop
xiejx618
这个作者很懒,什么都没留下…
展开
-
spring aop(四)--基于@AspectJ
对于spring使用aop,为了实现不将横切逻辑织入到目标类的所有方法中去,从而要使用切点来定位某个类的某个方法.但有仅有切点无法实现AOP,因为还需要横切逻辑(平时所说的通知),切面就可以包含这些信息.创建切面的方法有很多种,但使用基于@AspectJ方式的配置应是最简单的.1.将目标类注册成Bean2.注册切面类(包含了切点,横切逻辑)3.注册自动代理创建器(用来解析带有@原创 2014-12-23 16:41:53 · 7809 阅读 · 0 评论 -
spring aop(一)--基于JDK
关于AOP的几个术语切面:一个横切多个对象关注点的模块化.连接点:程序执行过程中某个特定的点.通知:切面的某个特定的连接点.切点:用于定位特定连接点.目标对象:被一个或者多个切面所通知的对象.AOP代理:为了实现aspect contracts(理解为通知方法等等),由AOP框架创建的对象.当一个类被AOP织入通知后,就产生一个结果类.它是融合了原类和通知逻辑的代理类.代理转载 2014-12-20 15:29:29 · 1282 阅读 · 0 评论 -
spring aop(二)--基于CGLib
前文已介绍基于JDK创建的代理方式实现一个性能监视功能,此文基于CGLib创建代理实现同样的功能(代码主要来源于Spring.3.x企业应用开发实战).1.pom.xml(当然也可以引入spring的jar包) cglib cglib 3.12.目标对象类(不再依赖接口)public class ForumServiceImpl { public void removeTo转载 2014-12-20 15:33:50 · 1111 阅读 · 0 评论 -
spring aop(十)--spring security启用全局方法使用aop的分析
使用以下配置就可启用spring security全局方法:@Configuration@EnableGlobalMethodSecurity(prePostEnabled=true)public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration {}那么它大致是如何起作用的?先从Ena原创 2015-03-02 23:48:20 · 5935 阅读 · 0 评论 -
spring aop(七)--拦截链
无论基于JDK还是CGLib,在触发方法调用时都会先通过List chain = this.advised.getInterceptorsAndDynamicInterceptionAdvice(method, targetClass);这句代码去获取拦截链.其中advised是AdvisedSupport类型.下面看看这个方法:public List getInterceptorsAnd原创 2015-02-14 21:35:39 · 2528 阅读 · 1 评论 -
spring aop(三)--aop在spring的使用
spring使用aop增强通知的种类:a.前置通知:在执行目标方法前实施某种逻辑.b.后置通知:在执行目标方法后实施某种逻辑.c.环绕通知在执行目标方法前后实施某种逻辑.d.异常抛出通知:在执行目标方法抛出异常实施某种逻辑.e.引入通知:在执行目标类添加新方法和属性.一.先从一个前置通知例子入手:1.ForumService.java和ForumServic原创 2014-12-23 16:39:20 · 1289 阅读 · 0 评论 -
spring aop(八)--使用BeanNameAutoProxyCreator创建代理
BeanNameAutoProxyCreator是自动代理创建器的三种之一.它是根据拦截器和设置的Bean的名称表达式做匹配来创建代理.下面是个例子1.主要依赖(略)2.声明一个环绕通知(拦截器)public class MyMethodInterceptor implements MethodInterceptor { @Override public Object invoke原创 2015-02-26 12:48:41 · 29235 阅读 · 5 评论 -
spring aop(五)--ProxyFactoryBean创建代理的实现
先看看ProxyFactoryBean的类层次结构.ProxyFactoryBean实现了FactoryBean,最终通过getObject方法生成Bean,所以getObject方法是个入口.public Object getObject() throws BeansException { initializeAdvisorChain(); if (isSinglet原创 2015-02-14 12:27:14 · 4005 阅读 · 0 评论 -
spring aop(六)--代理调用机制
一.先看基于JDK的1.从上面的Proxy.newProxyInstance(classLoader, proxiedInterfaces, this),这里的this就是指自身,一旦代理的方法被调用,就会触发this的invoke方法,即org.springframework.aop.framework.JdkDynamicAopProxy#invokepublic Obje原创 2015-02-14 12:30:14 · 6169 阅读 · 0 评论 -
spring aop(九)--使用DefaultAdvisorAutoProxyCreator创建代理
根据spring-framework-reference,DefaultAdvisorAutoProxyCreator创建代理更加通用强大,使用此机制包括:a.指定一个DefaultAdvisorAutoProxyCreator Bean的定义.b.指定在相同或相关的上下文中任意数量的Advisor.注意,必须是Advisor,而不仅仅是interceptor或advice.这是必要的,因原创 2015-02-26 16:52:54 · 12550 阅读 · 1 评论