`
hongzhguan
  • 浏览: 273042 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Spring的AOP总结

阅读更多

1.Spring AOP的知识点总结:
 a.AOP--------->面向切面编程,其核心:解决程序中的公共问题(如:权限验证,日志记录等)
 b.AOP概念:
  I.切面(Aspect):一个关注点的模块化,可能横切多个对象(如:事务管理)。
  I.连接点(JoinPoint):程序执行过程中某个特定的点(如:调用某方法或者处理异常)。
  I.通知(Advice):包括Around(环绕通知)、Before(前置通知)、After(后置通知)、Throws(异常通知),大部分AOP框架以(Interceptors)拦截

器作为
    通知模型。
  I.切入点(Pointcut):匹配连接点(JoinPoint)的断言。
  I.引入(Introduction):为一个类增加方法或字段。通过引入来使所有对象实现IsModified接口。-------为简化缓存。
  I.目标对象(Target Object):包含一个连接点的对象,也称代理对象。
  I.AOP代理(AOP Proxy):AOP框架产生的对象,包括通知Advice。
  I.织入(Weaing):将切面(Aspect)连接至其他应用程序类型或对象,并创建被通知(Advised)的对象。

2.Spring AOP代理:通过调用某个类的**方法之前或之后执行相应的操作(如:权限验证,日志记录等)
  注意:spring默认主要用于接口的JDK动态代理,也可以通过CGLIB代理实现类的代理而非接口。若对象无须实现接口,默认使用CGLIB代理。
        CGLIB代理类特点:是对实现类进行代理。必须启用:<aop:aspectj-autoproxy/>
        
  I.AOP代理的特点:代码从系统中分离,精力集中业务的实现。
                   系统涉及的公共问题集中实现。
                   精力集中在业务代码的实现。
  I.Spring AOP:只支持Spring Bean方法执行连接点,
  I.切入点声明包括两个部分:
    a.签名,包含名称与任意参数。
    b.切入点表达式,决定关注哪个方法的执行。
   
   
3.Spring的通知:实现了核心业务与非核心业务的分离。
  I.Around(环绕通知):在连接点的前后执行,拦截对目标对象方法的调用。
    a.环绕通知需要实现MethodInterceptor接口。
    b.invoke()方法在执行代理的目标方法时该方法自动调用。(invocation:连接点所属目标子类及连接点信息)
      public Object invoke(MethodInvocation invocation) throws Throwable{
       ------------前置的操作-------------
       Object obj=invocation.proceed();
       ------------后置的操作-------------
        return obj;
      }
     
   II. 前置通知(Before):在目标方法被调用之前调用
     a.前置通知实现MethodBeforeAdvice接口
     b.before()方法将在目标方法调用之前自动被调用
     public void before(Method  args0,Object[] arg1,Object arg2) throws Throwable{
      //一些在业务操作之前调用的操作
     } 
     注解:arg0:记录连接点的信息
           arg1:连接点(即被通知的方法)的参数信息
           arg2:目标对象信息
  
   III.后置通知(After):在目标方法被调用之后调用
      a.后置通知实现AfterReturningAdvice接口。
      b.afterReturning()方法在目标方法调用结束后自动调用。
      pubic void afterReturning(Object arg0,Method arg1,Object[]arg2,Object arg3) throws Throwable{
       //一些在业务方法操作之后调用的操作
      }
      注解:arg0:连接点方法返回类型信息
            arg1:连接点的参数信息
            arg2:连接点所属的目标类
 
    IV.异常通知(Throws):当连接点(即目标方法)抛出异常时才会执行异常通知类。
       a.实现ThrowsAdvice接口。
       b.afterThrowing()方法在目标方法抛出异常时调用
         public void aferThrowing(Method method,Object[]arg0,Object arg1) throws Throwable{
          //定义异常的信息或方法
         }
  V.在提供一些通知后要在applicationContext.xml中配置
   a.配置spring代理方式定义的实体对象
   b.配置通知类<bean id="beforeAdvice" class="path路径"/>
   <!---------------------当需要对方法增加处理------------------------------------!>
   <!--
     <!-- 将环绕通知拦截器包装为Advisor,该对象确定代理对何种方法增加处理-->
            <bean id="aroundAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
            <!-- Advice属性确定处理Bean -->
            <property name="advice">
            <!-- 应用容器的通知类型Bean(如:后置通知) -->
            <ref bean="afterAdvice"/>
            </property>

        <!-- patterns确定正则表达式模式-切入点(条件)->
       
        <property name="patterns">
        <!--确定正则表达式的列表-->
        <list>
        <value>.*方法名.*</value>
        </list>
        </property>
        </bean>
    -->
   c.使用ProxyFactoryBean产生代理对象,通过代理类访问业务逻辑。
    <bean id="proxyBean" class="org.springframework.aop.framework.ProxyFactoryBean">------>配置一个代理工厂
    <!--代理对象所实现的接口-->
    <property name="proxyInterfaces">--------->必须依靠代理上层的代理接口
    <value>自定义的接口的path</value>
    </property>
    d.通过代理需要的拦截器,可以是普通的Advice,也可以是Advisor
     <property name="interceptorNames">
     <list>
     <value>beforeAdvice(通知类的实例对象)</value>
     </list>
     </property>
     e.目标对象------->目标对象
     <property name="target">
     <ref bean="实体类的对象"/>
     </property>
    
----------------------------------------------------------------------------
注意:AOP:也可如下实现切面注入
    I.配置切面Bean和实体类bean
    I.配置信息
    <!-- 配置AOP -->
    <aop:config>
    <!-- 配置切面 -->
    <aop:aspect id="testAspect" ref="txAspect">
    <!-- 配置通知 -->
    <aop:before method="doBefore" pointcut-ref="cut"/>
    <!-- 配置切入点
         expression:表达式
         第一个"*":任意返回值
         第二、三个"*":任意子包下所有类
         (..):任意参数
         如匹配一个参数 String类型 (String)
     -->
    <aop:pointcut id="cut" expression="execution(* com.imp.*.*(..))"/>
    </aop:aspect>
    </aop:config>

分享到:
评论

相关推荐

    Spring AOP总结

    Spring AOP(面向切面编程)是Spring框架中的一个重要组成部分,它允许开发者通过定义切面来实现代码的解耦和模块化。AOP的核心概念包括切面、通知、连接点、切入点、织入等,这些概念帮助我们实现横切关注点的分离...

    Spring AOP完整例子

    总结一下,Spring AOP提供了一种优雅的方式来处理系统的横切关注点,如日志记录、事务管理或性能监控。通过定义切点、创建切面和配置通知,我们可以实现代码的解耦,提高可维护性和复用性。这个例子提供了学习Spring...

    Spring AOP面向方面编程原理:AOP概念

    ### Spring AOP面向方面编程原理:AOP概念详解 #### 一、引言 随着软件系统的日益复杂,传统的面向对象编程(OOP)逐渐暴露出难以应对某些横切关注点(cross-cutting concerns)的问题。为了解决这一挑战,面向方面编程...

    springAop的配置实现

    **Spring AOP 配置实现详解** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它允许我们通过分离关注点来简化应用程序的开发。在传统的面向对象编程中,业务逻辑与日志记录...

    spring-aop-jar

    总结起来,"spring-aop-jar"涉及了Spring框架中的面向切面编程模块,包括Spring AOP和AspectJ的集成。通过理解和熟练使用这些组件,开发者可以有效地解耦关注点,提高代码的可维护性和可扩展性。在实际项目中,结合...

    Spring AOP IOC源码笔记.pdf

    Spring框架是Java开发中不可...总结,Spring框架的IoC和AOP特性极大地简化了Java开发,通过依赖注入解耦了组件,通过面向切面编程解决了共性问题。理解并熟练掌握这些概念和机制,对于提升开发效率和代码质量至关重要。

    spring AOP 理论知识点总结.wps

    spring AOP 理论知识点总结.wpsspring AOP 理论知识点总结.wpsspring AOP 理论知识点总结.wps

    spring aop demo 两种实现方式

    总结来说,Spring AOP提供了一种强大的方式来实现横切关注点,降低了代码的耦合度。无论是通过注解还是配置文件,都能够有效地实现切面的定义和拦截操作。理解并掌握Spring AOP的使用,对于提升Spring框架的应用能力...

    spring aop切面拦截指定类和方法实现流程日志跟踪

    ### Spring AOP 实现流程日志跟踪 #### 一、背景与目的 在现代软件开发过程中,为了确保系统的稳定性和可维护性,通常会引入非功能性的需求来增强应用程序的功能,比如日志记录、安全控制等。这些需求往往不是业务...

    Spring aop 性能监控器

    总结来说,Spring AOP性能监控器通过切面编程实现了对目标方法的无侵入性监控,通过自定义注解、切面类以及配置,我们可以轻松地记录和分析应用程序的性能数据。结合源码学习,可以提升对Spring AOP机制的深入理解。

    SpringAOP.rar_springAOP

    《Spring AOP:面向切面编程的深度解析》 在软件开发中,Spring框架以其强大的功能和灵活性,已经成为Java企业级应用的首选框架之一。其中,Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架...

    spring aop 附带测试实例

    在提供的压缩包文件"springAOP"中,可能包含了以下内容: - **切面类(Aspect Class)**:包含切点和通知的Java类,可能使用了`@Aspect`注解。 - **目标类(Target Class)**:被AOP代理的对象,通常包含业务逻辑。...

    spring之AOP(动态代理)

    总结一下,Spring的AOP机制通过JDK动态代理和CGLIB动态代理提供了强大的横切关注点管理功能。开发者可以轻松地定义切面和通知,以实现如日志、事务管理等功能,同时保持核心业务代码的清晰和简洁。在Spring Boot项目...

    spring aop注解版

    总结起来,Spring AOP注解版通过简单易懂的注解,使得面向切面编程变得更加直观和方便。它降低了横切关注点与业务逻辑之间的耦合度,提高了代码的可维护性和复用性。通过合理利用这些注解,开发者可以轻松地实现日志...

    spring aop

    总结来说,这个项目提供了基于Maven和Spring的Web应用实例,展示了如何利用Spring AOP进行切面编程,包括XML配置和注解两种方式。通过学习这个项目,你可以深入理解Spring AOP的工作原理,以及如何在实际项目中有效...

    Spring AOP学习资料(pdf)

    ### Spring AOP 学习资料知识点总结 #### 一、Spring AOP 概念与背景 **Spring AOP**(面向切面编程)是Spring框架中的一个重要组成部分,它通过预定义的切入点来分离关注点,使得核心业务逻辑更加清晰,同时能够...

    Spring AOP 入门作者:廖雪峰

    ### Spring AOP 入门详解 #### 一、Spring AOP 概述 Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个关键特性,它为开发者提供了在运行时动态添加代码(即横切关注点或切面)到已有...

    Spring AOP的底层实现技术

    总结来说,Spring AOP通过代理模式和切面编程思想,实现了代码的解耦和模块化,提高了软件的可维护性和可扩展性。了解并熟练掌握Spring AOP的底层实现技术,对于提升开发效率和编写高质量的Java应用程序具有重要意义...

Global site tag (gtag.js) - Google Analytics