
Spring Aop介绍
介绍Spring Aop相关的内容。
elim168
这个作者很懒,什么都没留下…
展开
-
Spring Aop(十六)——编程式的自定义Advisor
编程式的自定义Advisor概述大多数情况下,我们的Aop应用都可以通过Spring的Aop配置来进行(不管是基于注解的,还是基于XML配置的)。Spring Aop的核心就是Advisor,Advisor接口中暂时有用的就是getAdvice()方法,而isPerInstance()方法官方说暂时还没有应用到,生成的Advisor是单例还是多例不由isPerInstance()的返回结果决定,而由原创 2017-11-04 20:48:36 · 7139 阅读 · 0 评论 -
Spring Aop(十五)——Aop原理之Advised接口
Spring Aop原理之Advised接口通过之前我们介绍的ProxyFactory我们知道,Spring Aop是通过ProxyFactory来创建代理对象的。ProxyFactory在创建代理对象时会委托给DefaultAopProxyFactory.createAopProxy(AdvisedSupport config),DefaultAopProxyFactory内部会分情况返回基于JD原创 2017-11-04 20:43:57 · 13545 阅读 · 0 评论 -
Spring Aop(十四)——Aop自动创建代理对象的原理
Aop自动创建代理对象的原理我们在使用Spring Aop时,通常Spring会自动为我们创建目标bean的代理对象,以使用对应的Advisor。前提是我们在使用Spring Aop时是使用的<aop:config/>或<aop:aspectj-autoproxy/>,这是因为当我们在applicationContext.xml文件中通过<aop:config/>的形式定义需要使用Aop的场景时,S原创 2017-11-04 20:39:50 · 6354 阅读 · 0 评论 -
Spring Aop(十三)——ProxyFactoryBean创建代理对象
ProxyFactoryBean创建代理对象ProxyFactoryBean实现了Spring的FactoryBean接口,所以它跟Spring中的其它FactoryBean一样,都是基于工厂模式来获取一个bean的。ProxyFactoryBean就是用来获取一个对象的代理对象的FactoryBean。它也是继承自ProxyCreatorSupport类的,所以它的功能基本跟ProxyFactor原创 2017-11-04 20:34:07 · 7005 阅读 · 0 评论 -
Spring Aop(十二)——编程式的创建Aop代理之AspectjProxyFactory
编程式的创建Aop代理之AspectjProxyFactory之前已经介绍了一款编程式的创建Aop代理的工厂——ProxyFactory,其实ProxyFactory拥有的功能AspectjProxyFactory都有。它们虽然没有直接的继承关系,但是它们都继承自ProxyCreatorSupport,而创建代理对象的核心逻辑都是在ProxyCreatorSupport中实现的。所以说ProxyFa原创 2017-10-28 18:11:00 · 4657 阅读 · 0 评论 -
Spring Aop(十一)—— 编程式的创建Aop代理之ProxyFactory
编程式的创建Aop代理之ProxyFactorySpring Aop是基于代理的,ProxyFactory是Spring Aop内部用来创建Proxy对象的一个工厂类。如果我们需要在程序运行时来动态的应用Spring Aop,则我们可以考虑使用ProxyFactory。使用ProxyFactory时,我们需要为它指定我们需要代理的目标对象、代理时我们需要使用的Advisor或Advice。如下示例就原创 2017-10-23 21:09:07 · 4319 阅读 · 0 评论 -
Spring Aop(十)——编程式的Pointcut
编程式的Pointcut除了可以通过注解和Xml配置定义Pointcut之外,其实我们还可以通过程序来定义Pointcut。Spring Aop的切入点(Pointcut)对应于它的一个Pointcut接口,全称是org.springframework.aop.Pointcut。该接口的定义如下: public interface Pointcut { ClassFilter getClas原创 2017-10-16 23:10:22 · 5028 阅读 · 0 评论 -
Spring Aop(九)——基于正则表达式的Pointcut
基于正则表达式的PointcutJdkRegexpMethodPointcutSpring官方为我们提供了一个基于正则表达式来匹配方法名的Pointcut,JdkRegexpMethodPointcut。该Pointcut是继承自StaticMethodMatcherPointcut的。我们在定义JdkRegexpMethodPointcut时可以通过patterns和excludedPattern原创 2017-10-15 23:28:11 · 6219 阅读 · 0 评论 -
Spring Aop(八)——advisor标签
8 advisor标签advisor标签是需要定义在aspect标签里面的,其作用与aspect类似,可以简单的把它理解为一个特殊的切面,用于把一个Advice和一个Pointcut组合起来。一个advisor标签对应的就是一个Advisor接口的实现类,默认是DefaultBeanFactoryPointcutAdvisor实现。其使用的基本语法类似如下这样。<aop:config> <a原创 2017-10-14 09:40:04 · 9687 阅读 · 1 评论 -
Spring Aop(七)——基于XML配置的Spring Aop
7 基于XML配置的Spring AOP基于XML配置的Spring AOP需要引入AOP配置的Schema,然后我们就可以使用AOP Schema下定义的config、aspect、pointcut等标签进行Spring AOP配置了。<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.or原创 2017-10-12 16:32:50 · 9527 阅读 · 0 评论 -
Spring Aop(六)——@DeclareParents介绍
6 @DeclareParents介绍@DeclareParents注解也是Aspectj提供的,在使用基于Aspectj注解的Spring Aop时,我们可以在切面中通过@DeclareParents指定满足指定表达式的类将自动实现某些接口。这个只是在运行时会将生成的代理类实现指定的接口。有接口就会有实现,对应的实现类也需要我们在@DeclareParents声明自动实现的接口时声明。现假设我们有原创 2017-10-06 17:56:33 · 6655 阅读 · 3 评论 -
Spring Aop(五)——给Advice传递参数
5 给Advice传递参数Advice除了可以接收JoinPoint(非Around Advice)或ProceedingJoinPoint(Around Advice)参数外,还可以直接接收与切入点方法执行有关的对象,比如切入点方法参数、切入点目标对象(target)、切入点代理对象(this)等。5.1 获取切入点方法参数假设我们现在有一个id为userService的bean中定义了一个fi原创 2017-10-04 21:02:15 · 16873 阅读 · 2 评论 -
Spring Aop(四)——基于Aspectj注解的Advice介绍
4 基于Aspectj注解的Advice介绍之前介绍过,Advice一共有五种类型,分别是before、after return、after throwing、after(finally)和around。在使用注解的时候,它们对应的注解分别是@Before、@AfterReturning、@AfterThrowing、@After和@Around。 这几个注解都是在org.aspectj.lang原创 2017-10-03 21:43:11 · 4541 阅读 · 0 评论 -
Spring Aop(三)——Pointcut表达式介绍
3 Pointcut表达式介绍3.1 表达式类型标准的Aspectj Aop的pointcut的表达式类型是很丰富的,但是Spring Aop只支持其中的9种,外加Spring Aop自己扩充的一种一共是10种类型的表达式,分别如下。execution:一般用于指定方法的执行,用的最多。within:指定某些类型的全部方法执行,也可用来指定一个包。this:Spring Aop是基于代理的,生成的原创 2017-10-02 11:52:13 · 15936 阅读 · 1 评论 -
Spring Aop(二)——基于Aspectj注解的Aop简单实现
2 基于Aspectj注解的Spring Aop简单实现Spring Aop是基于Aop框架Aspectj实现的,它不是完完全全的对Aspectj框架进行扩展和改造,而是利用Aspectj里面的一些功能来实现自己的Aop框架,其中就包括对Aspectj提供的注解的解析。之前已经提过Spring Aop和Aspectj实现的Aop之间的差别,这里就不再赘述。本文主要描述的是如何利用Aspectj提供原创 2017-09-28 08:39:19 · 3337 阅读 · 0 评论 -
Spring Aop(一)——Aop简介
1 Aop简介AOP的全称是Aspect Oriented Programming,翻译成中文是面向切面编程。它的主要思想是在程序正常执行的某一个点切进去加入特定的逻辑。AOP框架中对AOP支持最完整的是Aspectj,Spring Aop是基于Aspectj实现的专门针对于Spring自身支持的Aop,它的功能没有Aspectj那么完整,它只作用于Spring bean容器中bean对象的某个方原创 2017-09-26 22:56:07 · 4455 阅读 · 2 评论