`
隐形的翅膀
  • 浏览: 496656 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

AOP基础

 
阅读更多
1. AOP不能取代OOP,它只是OOP的补充和扩展

2. AOP术语

方面 Aspect: 相当于OOP中的类,就是封装用于横插入系统的功能
通知 Advice: 用于横切的代码不能写在方法中,而要写在和方法类似的实体中,称为通知
Jointpoint:连接点:
切入点(Pointcut):
目标(Target):
代理(Proxy):
织入(Weaving)

3. 4种通知(Advice)

前置通知MethodBeforeAdvice,
后置通知AfterReturningAdvice,
环绕通知AroundAdvice,
异常通知ExceptionAdvice

会传入方法名,参数

要拦截的类和方法
public interface MyInterface
{
public String getHello(String name);
public int getRandomInt(int max);
}

public class MyClass implements MyInterface
{
public String getHello(String name)
{
.......
}
public int getRandomInt(int max)
{
......
}

}


4. 拦截方法

public class BeforeAdvice impleemnts MethodBeforeAdvice
{
   public void before(Method method, Object[] args, Object target) throws Throwable
   {
      System.out.println("beforeAdvice:" + target.getClass().getName() +"." + method.getName() + " 参数值:“ + 啊如果是[0]);

      if(method.getName().equals("getHello")
      {
        args[0] = "chao ren";
      }
    }
}


5. 装配

<bean id="myClass" class="company.MyClass"/>

<bean id="MyClassProxy" class="org.springframework.aop.framework.Proxy.FactoryBean">

   <property name="proxyInterfaces">
      <list>
          <value>company.MyInterface</value>
      </list>
    </property>

    <property name="interceptorNames">
       <list>
           <value>beforeAdvice</value>
           <value>afterAdvice</value>
           <value>exceptionAdvice</value>
       </list>
     </property>

     <property name="target">
            <ref bean="myClass"/>
     </property>

</bean>


7. 调用


MyInterface myInterface = (MyInterface) context.getBean("myClassProxy");

myInterface.getHello("bill");

myInterface.getRandomInt(100);


8. Spring AOP 拦截了目标类中的所有方法,而通常只需要拦截部分的方法

NameMatchMethodPointcut , 通过该切入点,可以拦截指定方法

public class Pointcut extends NameMatchMethodPointcut
{
   @Override
   public boolean matches (Method method, Class targetClass)
   {
      this.setMappedName("getHello");
       this.setMappedName("get*");
      return super.matches(method,targetClass);
   }
}


装配

<bean id="pointcu" class="mycomoany.Pointcut/>

<bean id="myAdvisor" class="...DefaultPointAdvisor">
     <property name="pointcut">
         <ref local="pointcut"/>
     </property>
     <property name="advice">
         <ref local="beforeAdvice"/>
     </property>
</bean>


<bean id="MyClassProxy" class="org.springframework.aop.framework.Proxy.FactoryBean">

   <property name="proxyInterfaces">
      <list>
          <value>company.MyInterface</value>
      </list>
    </property>

    <property name="interceptorNames">
       <list>
           <value>myAdvisor</value>
           <value>afterAdvice</value>
           <value>aroundAdvice</value>
           <value>exceptionAdvice</value>
       </list>
     </property>

     <property name="target">
            <ref bean="myClass"/>
     </property>

</bean>


9. 使用控制流切入点

更具要调用被拦截方法的类, 调用被拦截方法的方法, 来拦截

ControllFlowPointcut
分享到:
评论

相关推荐

    spring 的AOP 基础

    **Spring AOP基础** 在Java开发中,Spring框架以其强大的功能和灵活性被广泛使用,而Spring AOP(面向切面编程)是其重要组成部分之一。AOP允许开发者将关注点从核心业务逻辑中分离出来,比如日志记录、权限检查等...

    Spring AOP基础关于AOP是什么的理解

    Spring AOP 基础关于 AOP 是什么的理解 AOP(Aspect Oriented Programming 面向方面的编程)是一种实现横切面的工具,它是 OOP 的补充,而不是 OOP 的竞争对手。AOP 的出现是为了解决 OOP 中的缺陷,即 OOP 中的类...

    AOP基础知识

    多年前搜到的一个AOP教程,代码和理论结合,浅显易懂,非常经典

    第二章:Spring AOP 基础1

    在本章"Spring AOP 基础1"中,我们主要探讨了Spring AOP(面向切面编程)的核心概念和实现方式。AOP是一种编程范式,它允许程序员定义"切面",这些切面封装了跨越多个对象的横切关注点,如日志、事务管理等。以下是...

    AOP基础与配置说明

    动态代理是AOP实现的基础。在Java中,有JDK动态代理和CGLIB动态代理两种方式。JDK动态代理基于接口实现,如果目标对象实现了至少一个接口,Spring就会使用JDK动态代理来创建代理对象。如果没有接口,Spring则会使用...

    Aop基础实例

    在IT领域,面向切面...通过学习和实践这个“Aop基础实例”,你不仅能掌握AOP的基本概念,还能了解到在Java环境中如何利用现有的工具和技术实现AOP的功能。这将对你在处理复杂系统和提升代码质量方面提供很大的帮助。

    AOP基础与配置

    下面我们将详细探讨AOP的基础知识以及如何在Spring中配置AOP。 首先,让我们了解一下AOP的基本概念: 1. **切面**:切面是关注点的模块化,比如日志记录、事务管理、性能监控等。 2. **连接点(Join Point)**:...

    Spring Aop基础入门

    Spring Aop基于annotation注解练习

    spring隔离级别和aop基础.md

    面向切面编程 (Aspect Oriented Programming, AOP) 是一种编程范式,旨在通过将横切关注点(如日志记录、安全控制、事务管理等)从业务逻辑中分离出来,提高系统的模块化程度。 #### AOP 在 Spring 中的实现 ...

    SpringSpring Aop基础入门

    Spring Aop基于xml练习

    spring ioc aop基础理论实践笔记

    1,spring是一个开源的免费的框架(容器)。 2,spring是一个轻量级的,非入侵式的框架。 ​ 非入侵式:就是项目引入了这个框架之后,...总结:spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。

    使用Spring配置文件实现AOP

    二、Spring AOP基础 在Spring中,AOP的实现依赖于两个主要组件:通知(Advice)和切点(Pointcut)。通知是实际执行的增强代码,如方法调用前的记录日志;切点是通知应该应用到的方法或类。Spring支持五种类型的的...

    AOP基础实例对初学者非常有用

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

    springAop的配置实现

    Spring AOP 基础概念** - **切面(Aspect)**:切面是关注点的模块化,比如日志、事务管理等,这些关注点可以被定义为一个独立的模块,称为切面。 - **通知(Advice)**:在特定连接点上执行的代码,也就是切面要...

    springAOP配置动态代理实现

    一、Spring AOP基础知识 1. **什么是AOP**:AOP是一种编程范式,用于处理系统中的横切关注点,即那些跨越多个类或方法的共同功能,如事务管理、日志记录等。AOP通过切面(Aspect)将这些关注点与业务逻辑分离,提高...

    一个简单的aop demo

    1. **AOP基础概念**: - **切面(Aspect)**:是AOP的核心,它封装了特定的关注点,如日志、事务管理等。 - **通知(Advice)**:在特定的连接点执行的代码,例如,前置通知(before)在方法执行前运行,后置通知...

    spring_AOP.rar_876.aop_java aop_spring_aop

    4. ch18_aop:可能是关于AOP基础理论或具体实现的章节。 5. ch19_aotowire:虽然名称中包含"AOP",但"AOT"通常指的是" Ahead Of Time",可能是关于Spring的自动装配(Auto-Wiring)功能,这个与AOP相关但不直接属于...

    Spring通过XML实现AOP

    AOP 基础概念** - **切面(Aspect)**:AOP 中的核心概念,它封装了横切关注点,如事务管理、日志记录等。 - **连接点(Join Point)**:程序执行中的特定点,如方法调用、异常处理等。 - **通知(Advice)**:在...

    开发者突击 精通AOP整合应用开发AspectWerkz+AspectJ+Spring.zip

    本书以AOP基础理论为主线,首先讲解AOP的产生与发展、为什么要应用AOP、AOP的核心概念,然后详细讲解AspectWerkz、AspectJ、Spring框架的AOP应用开发技术。 随书附赠的光盘内容为本书开发的案例程序包。本书内容循序...

    spring AOP 基础

    Spring AOP(面向切面编程)是Spring框架的一个核心组件,它允许开发者在不改变原有代码的情况下,通过预编译和运行期动态代理技术,向程序中动态地添加额外的功能。本教程主要介绍AOP的基本概念,使用代理模式实现...

Global site tag (gtag.js) - Google Analytics