`
ruzhefeng
  • 浏览: 2038 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

AOP学习总结

阅读更多

一:配置文件配置分析如下:
   <?xml version="1.0" encoding="UTF-8"?>
   <beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:aop="http://www.springframework.org/schema/aop"
      xsi:schemaLocation="
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

<bean id="cc" class="cn.java.spring2.Impl2">
</bean>

<!-- 这个bean与其他bean无关,与AOP也毫无关系。所以去掉下面的aop配置不影响程序原有的功能。
一旦配置了aop,就会装载,对程序监控。
-->
<bean id="bb" class="cn.java.aop.MyTarget">
</bean>

<bean id="MyAdvice" class="cn.java.aop.MyAdvice"/>
<!-- 使用<aop:config/>的配置,在上面的声明中必须包含名字空间为xmlns:aop=""的-->
<aop:config>
      <aop:aspect ref="MyAdvice">
     
<!-- 按切入点配置的表达式对类MyTarget的方法test1()监控,只要调用运行test1()方法,
       就会触发事件。这时就会找aspect ref="MyAdvice",然后再找id="MyAdvice"
       的bean,去执行那个class(就是我们追加功能的那个类).id="xxx"的xxx是我们在下面
       <aop:around pointcut-ref="xxx" method="xxx"/>中pointcut-ref的名称。
       方法名与括号间加*表示以"test1"开头的方法。
  -->
         <aop:pointcut id="myMethod"
                    expression="execution(* cn.javass.aop.MyTarget.test1*())"/>

         <!-- 按下面配置中的before,around,after决定把我们追加的功能追加到原有方法的前面或后面,
              我们追加功能的方法的方法名在method="方法名"中配置。配置为aop:around时,需要在程序中
              用call.proceed()调用一下。
-->
         <aop:around pointcut-ref="myMethod" method="cc"/>

      </aop:aspect>
   </aop:config>

</beans>


二:我们追加功能的类写法
   package cn.java.aop;

   import org.aspectj.lang.ProceedingJoinPoint;

   public class MyAdvice {
/*
* 本类是追加功能的类,执行本类的方法时,把功能按配置中的before,around,after分别追加到
* 原来方法的不同位置(前面或后面)
*/
public Object cc(ProceedingJoinPoint call) throws Throwable {

     System.out.println("111111111111111111111111");
     /*
      * 使用配置为around要在程序中写call.proceed(),如果不写,
      * 监控到要修改的方法后,会被我们的方法全部替代,不执行原有的方法。
      */
     call.proceed();
     System.out.println("2222222222222222222222222");
     return null;
   }

   }

三:目标对象(包含连接点,即我们要监控的方法的类)的写法。
   package cn.java.aop;

   public class MyTarget {

/*
* 本类为目标对象,就是程序原有的类和实现功能的方法。
*/
public void test1(){
System.out.println("now is test1================>");
}
public void test2(){
System.out.println("now is test2================>");
}
public void test3(){
System.out.println("now is test3================>");
}
  }

四:客户端写法:
   package cn.java.aop;

   import org.springframework.context.ApplicationContext;
   import org.springframework.context.support.ClassPathXmlApplicationContext;

   public class Client {
/*
* 本类为客户端,是Spring的入口点。
*/
public static void main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[]{"applicationContext.xml"});

MyTarget t = (MyTarget)context.getBean("bb");
t.test1();
}
   }
0
0
分享到:
评论

相关推荐

    AOP总结

    - 学习成本较高,理解AOP概念和实现机制需要一定的时间。 - 由于引入了代理,可能会增加运行时的内存消耗和性能开销。 - 可能会导致代码的透明性和可读性降低,特别是当切面过于复杂时。 在实际开发中,我们需要...

    AOP技术总结 1

    - **学习曲线陡峭:** - 对于新手来说,理解和掌握AOP的概念和技术可能较为困难。 ### 结论 AOP技术为软件开发带来了新的视角,它不仅解决了面向对象编程中的某些固有局限性,还极大地提高了代码的质量和可维护性...

    Spring_AOP_学习小结 Spring_AOP_学习小结 Spring_AOP_学习小结

    总结,Spring AOP提供了一种优雅的方式,让我们能够分离关注点,实现代码的模块化,提高可维护性和复用性。理解并熟练运用这些概念和机制,可以极大地提升我们的开发效率和代码质量。通过学习和实践,你可以更好地在...

    Spring AOP学习资料(pdf)

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

    spring中AOP个人总结

    aop(aspect oriented programming)面向切面编程是spring当中一个重要内容,在学习之后感觉这个思想挺不错的,做个总结 AOP讲解 一、面向切面编程 ​ 听说过面向对象编程(oop),但是面向切面编程还真是第一次...

    AOP操作面板学习

    ### AOP操作面板学习知识点详解 #### 一、AOP30操作面板简介 - **定义**: AOP30操作面板是专为SINAMICS S120变频调速柜设计的一种人机交互界面,用于实现对变频器的操作、监控与调试。 - **功能**: 支持参数设置、...

    aopalliance

    总结,AOPAlliance在Spring 2.0中起着桥梁和纽带的作用,它为AOP的实现提供了一个通用的接口,促进了框架间的协作。通过理解并掌握AOPAlliance,开发者能够更好地利用Spring 2.0的AOP特性,实现高效、灵活的代码组织...

    aopalliance-white-paper(AOP Alliance白皮书)

    - **意义**:AOP Alliance 的成立是为了推动 AOP 技术的发展,通过定义一套通用的接口,促进不同 AOP 实现之间的互操作性,从而降低开发者的学习成本,提高开发效率。 #### 三、AOP Alliance 的核心概念 - **切面...

    spring学习总结

    ### Spring学习总结 #### Spring Beans模块详解 Spring框架的核心组件之一是Spring Beans模块,它主要负责管理对象(称为Bean)的生命周期以及它们之间的依赖关系。本节将详细探讨该模块的关键概念和技术细节。 #...

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

    这种轻量级的特性使得Spring AOP更易于学习和集成。 3. **灵活的通知模型**:Spring AOP提供了多种类型的通知,包括around、before、after returning、after throwing等,使得开发者可以根据实际需求选择最适合的...

    aopalliance-1.0.rar

    总结来说,AOP Alliance 1.0是Java世界中AOP概念和实践的桥梁,它通过提供统一的接口标准,促进了不同AOP框架间的互操作性。这个资源包不仅包含了一个稳定的AOP实现,还为我们提供了理解、学习和使用面向切面编程的...

    AOP 面向方面编程 技术总结

    此外,AOP的使用可能增加了学习曲线,因为它引入了新的编程概念和工具。最后,由于AOP尚未形成统一的标准,不同的实现之间可能存在兼容性问题,这可能限制了其广泛应用。 总之,面向方面编程(AOP)是解决复杂系统中...

    Spring AOP完整例子

    Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许开发者在不修改源代码的情况下,通过...这个例子提供了学习Spring AOP实际操作的宝贵资源,通过阅读源码和运行测试,你将对Spring AOP有更全面的认识。

    spring-aop源码

    总结,Spring AOP源码的探索有助于开发者深入理解面向切面编程的实现机制,提升问题解决能力,从而更好地利用AOP技术优化和维护应用程序。通过实践与学习,我们可以更好地驾驭这个强大的工具,提高代码的可维护性和...

    SSH笔记-AOP

    总结,SSH笔记-AOP涵盖了Spring中AOP的核心概念,包括动态代理技术的使用、基于注解的AOP配置以及如何在XML中声明切面。学习和掌握这些内容,能够帮助开发者更好地利用Spring框架实现代码的解耦和模块化,提高系统的...

    maven工程AOP实现demo

    通过这个Maven工程AOP实现的demo,我们学习了如何在Spring项目中使用注解进行AOP编程,包括定义切面、切入点、通知,并配置Spring以启用AOP。这种方式使得我们可以轻松地在不改动业务代码的情况下,插入横切关注点,...

    springaop学习

    ### Spring AOP 学习知识点详解 #### 一、Spring AOP 原理 **Spring AOP**(面向切面编程)是 Spring 框架中的一个关键特性,它提供了一种优雅的方式来处理横切关注点(cross-cutting concerns)。在实际应用中,...

    AOP学习笔记

    《AOP学习笔记》 在软件开发中,面向切面编程(Aspect-Oriented Programming,简称AOP)是一种重要的编程范式,它旨在提高代码的可读性和可维护性,通过将关注点分离来实现模块化。AOP的核心概念是切面、连接点、...

    Springboot整合Aop.zip

    总结,SpringBoot 整合 AOP 提供了一种高效、灵活的方式来管理和实现系统中的非业务逻辑,使得开发者能够专注于核心业务代码的编写,提高代码质量和开发效率。通过熟练掌握 AOP,我们可以更好地应对复杂系统的挑战,...

Global site tag (gtag.js) - Google Analytics