• spring源码-aop-5


      一、在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

      二、主要作用:日志记录,性能统计,安全控制,事务处理,异常处理等等。

      三、AOP:我们通常称为面向切面编程,这个切面有什么不一样的地方呢?相对于原来使用的OOP,我们在这个基础上面加入其它相关逻辑而不影响本身的实现逻辑。通俗一点就是在原来执行中加入:之前、之后、return、异常、环绕等处理。目的介绍代码耦合,并且不会影响原来的逻辑。常用的方式就是日志了,日志收集,异常处理等。

      四、实现过程:

       1)需要被处理的例子

    public class AspectTest {
        public void test() {
            System.out.println("test");
        }
    }

      2)需要对相应对象进行的处理类

    @Aspect
    public class AspectHandler {
    
        @Before("execution(* *.*(..))")
        public void before() {
            System.out.println("before");
        }
    
        @After("execution(* *.*(..))")
        public void after() {
            System.out.println("after");
        }
    }

       备注:execution:表达式可以自己百度,我这里有一个例子

      

      3)spring-bean.xml配置

    <?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.xsd
                                 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
        <aop:aspectj-autoproxy/>
        <bean class="com.pinnet.aop.AspectHandler"/>
        <bean id="aspectTest" class="com.pinnet.aop.AspectTest"/>
    </beans>

      4)测试

      public static void main(String[] args) {
            ApplicationContext context = new ClassPathXmlApplicationContext("spring-bean.xml");
            AspectTest aspectTest = (AspectTest) context.getBean("aspectTest");
            aspectTest.test();
        }

      

      五、源码部分:这里分两部分了讲,主要是aop的实现过程,以及动态代理过程

      1)spring源码-aop源码-5.1

      2)spring源码-aop增强-5.2

      3)spring源码-aop动态代理-5.3

  • 相关阅读:
    JAVA版SqlHelper
    JAVA中的继承特点1
    C# SqlBulkCopy类批量导入数据
    动态注册HttpModule管道,实现global.asax功能
    实现自己的前端模板轻量级框架
    事务消息中心-TMC
    Win10应用设计的那些事儿
    考拉定时任务框架kSchedule
    如何玩转基于风险的测试
    谈谈Java异常处理这件事儿
  • 原文地址:https://www.cnblogs.com/ll409546297/p/10113678.html
Copyright © 2020-2023  润新知