• 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

  • 相关阅读:
    JSP自定义标签_用简单标签控制标签体执行10次
    JSP自定义标签_用简单标签实现控制标签体是否执行
    eclipse 使用lombok 精简java bean
    转 :关于springmvc使用拦截器
    转: spring静态注入
    spring 4.0+quartz2.2 实现持久化
    排除maven jar冲突 maven tomcat插件启动报错 filter转换异常
    转 Quartz将Job持久化所需表的说明
    转 maven jetty 插件
    ORA-14300: 分区关键字映射到超出允许的最大分区数的分区
  • 原文地址:https://www.cnblogs.com/ll409546297/p/10113678.html
Copyright © 2020-2023  润新知