`

aop实现的一些预置了解

    博客分类:
  • aop
阅读更多

       spring的aop技术,我以前只知道是面向切面的思想模式,但是一直不知道它是如何实现的,曾经一度怀疑和设计模式差不多。。。。这几天,看了下资料,发现主要有三中方式,÷

一是编译期编译的实现添加一些共同的特性,

二是类加载的时候添加一些共同的特性,

三是动态代理,即是用反射的方法来执行方法,在这期间把一些共有的特性添加进去。

1,编译期编译需要了解的东西,JavaCompiler对象,JDK6.0有ToolProvider对象产生。简单的代码如下所示。

public void test()
    {
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
        InputStream in = null;// 编译期不接受任何控制台的流输入,总是为NULL
        OutputStream out = null;// 输出流,如果为null,默认为System.out
        OutputStream err = null;// 出错流,如果为null,默认为System.err
        int result = compiler.run(in, out, err, "Test.java");// result 为0,表示编译成功
    }
 

2,类加载需要继承类加载器 ClassLoader.

3,动态代理

 public static void handler(String className, String methodName)
    {
        try
        {
            
            Class<?> cla = Class.forName(className);
            Method method = cla.getMethod(methodName);// 获取空参的方法;如果有参,报异常
            Object obj = cla.newInstance();// 简单的产生实例,如果没有空参构造器,会报异常
            System.out.println("--------------start----------------");
            long start = System.currentTimeMillis();
            method.invoke(obj);// 执行方法
            System.out.println(System.currentTimeMillis() - start);
            System.out.println("--------------end----------------");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
分享到:
评论

相关推荐

    spring aop实现原理

    NULL 博文链接:https://zhang-yingjie-qq-com.iteye.com/blog/319927

    spring的aop实现

    了解了这些基本概念后,我们可以通过编写切面类、定义切入点和通知,以及配置Spring来实现AOP。在实际项目中,正确地使用Spring AOP可以极大地提高代码的可维护性和可复用性,让我们的应用程序更加整洁高效。在...

    Asp.net Core 3.1基于AspectCore实现AOP实现事务、缓存拦截器功能

    在net core2.2时,我当时就尝试过用autofac实现aop,但这次我不想用autofac,我用了一个更轻量级的框架,AspectCore。 用起来非常非常的简单,但一开始还是走了一点弯路,主要是网上都是net core3以下的教程,3以下...

    Spring AOP实现机制

    **Spring AOP 实现机制详解** Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许程序员在不修改源代码的情况下,通过“切面”来插入额外的业务逻辑,如日志、事务管理等。AOP的引入极大地提高了代码的...

    基于注解实现SpringAop

    基于注解实现SpringAop基于注解实现SpringAop基于注解实现SpringAop

    springAOP实现数据字典.zip

    在这个"springAOP实现数据字典.zip"压缩包中,我们主要关注的是如何利用Spring AOP来实现数据字典的功能。数据字典是系统设计中一个关键的组成部分,它存储了系统中所有数据的描述,包括数据项、数据结构、数据流、...

    spring基于AOP实现事务

    首先,了解什么是AOP。AOP是Spring框架的核心特性,它允许我们在不修改业务代码的情况下,通过“切面”(aspect)来插入额外的功能,如日志、安全检查和事务管理。在Spring中,AOP主要是通过代理模式实现的,有JDK...

    反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    在使用反射实现AOP动态代理时,我们也需要注意一些问题。例如,由于代理类是在运行时动态创建的,这可能会影响程序的性能,特别是在频繁调用代理方法的情况下。因此,在实际开发中,需要根据应用场景的性能要求和...

    基于springboot+mvc+freemarker+aop实现校友信息管理系统源码.zip

    1、基于springboot+mvc+freemarker+aop实现校友信息管理系统源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考...

    Spring  AOP实现方法大全

    【Spring AOP实现方法大全】 在Spring框架中,面向切面编程(Aspect-Oriented Programming,简称AOP)是一种强大的设计模式,它允许我们在不修改业务代码的情况下,插入额外的功能,比如日志记录、事务管理等。在...

    利用C#实现AOP常见的几种方法详解

    有一些完整的AOP框架,如Spring.NET和NAspect,它们提供了一套完整的面向切面编程解决方案,包括切点表达式、通知(advice)、切面(aspect)等概念。这些框架使得AOP的使用更加标准化,但也增加了项目依赖。 在...

    springboot-AOP实现多数据源动态切换(Druid连接池)

    首先,要实现多数据源动态切换,我们必须了解以下几个关键技术点: 1. **Spring AOP(面向切面编程)**:AOP是Spring框架的核心特性之一,它允许我们定义方法拦截器或切面来跨多个点应用横切关注点。在这里,我们...

    JAVA 中Spring aop 实现日志记载

    在Java开发中,Spring AOP(面向切面编程)是一个强大的功能,用于实现日志记录。AOP允许我们在不修改原有代码的情况下,插入新的行为,比如日志记录,事务管理等。下面将详细介绍如何在Spring框架中使用AOP来实现...

    Unity结合三导实现依赖注入跟AOP

    2. Unity AOP:Unity提供了对AOP的支持,可以通过拦截器(Interceptor)实现。拦截器是实现AOP的核心,它在方法调用前后执行自定义逻辑。 3. 创建拦截器:通过继承`IInterceptor`接口或使用`Unity.Interception`库...

    基于springboot+mvc+freemarker+aop实现校友信息管理系统.zip

    基于springboot+mvc+freemarker+aop实现校友信息管理系统.zip基于springboot+mvc+freemarker+aop实现校友信息管理系统.zip基于springboot+mvc+freemarker+aop实现校友信息管理系统.zip基于springboot+mvc+freemarker...

    注解方式实现AOP编程

    AOP通常用于实现横切关注点,如日志记录、事务管理、权限检查等,这些功能在多个类或方法中都有可能出现。在Spring框架中,AOP的实现有两种主要方式:一种是基于XML配置,另一种是基于注解。本篇将主要讨论如何通过...

    C#自己实现AOP的事务操作

    C#作为.NET框架的主要编程语言,提供了强大的支持来实现AOP,特别是在处理事务管理方面。事务是数据库操作的核心概念,确保数据一致性并能够在异常情况下进行回滚。 C#实现AOP事务的关键在于利用特性(Attribute)...

    AOP的实现机制.

    下面将详细探讨AOP的实现机制。 一、AOP核心概念 1. 切面(Aspect):切面是关注点的模块化,它包含了一组相关通知(advice)的集合,以及这些通知如何插入到应用程序的定义。 2. 连接点(Join Point):程序执行...

    maven工程AOP实现demo

    ** Maven工程AOP实现Demo详解 ** 在Java开发中,Maven是一个不可或缺的构建工具,它可以帮助我们管理项目依赖、构建应用以及执行自动化任务。而AOP(Aspect Oriented Programming,面向切面编程)则是Spring框架的...

    java分页 动态代理 aop实现

    本话题主要围绕"Java分页"、"动态代理"以及"AOP(面向切面编程)"在Spring框架中的实现进行详细讲解。 首先,我们来看"Java分页"。在处理大量数据时,一次性加载所有数据不仅会消耗大量的内存,也可能导致用户界面...

Global site tag (gtag.js) - Google Analytics