广告
返回顶部
首页 > 资讯 > 后端开发 > Python >如何在不使用spring框架中使用aop的功能
  • 583
分享到

如何在不使用spring框架中使用aop的功能

2024-04-02 19:04:59 583人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录spring提供了两种方式的aop使用使用xml配置方式使用注解方式AspectJ简介AspectJ的使用实例不使用spring的aop功能实现日志输出第一种第二种:通过面向接口

Spring框架的AOP机制可以让开发者把业务流程中的通用功能抽取出来,单独编写功能代码。在业务流程执行过程中,Spring框架会根据业务流程要求,自动把独立编写的功能代码切入到流程的合适位置。

spring提供了两种方式的AOP使用

使用xml配置方式

在这里插入图片描述

使用注解方式

在这里插入图片描述

这里需要注意的是Spring AOP目前仅仅支持方法级别的切面,成员的interception并没有实现。另外,spring aop仅仅是集成框架,并没有参与aop的具体开发。

如果想利用aop的更多功能,或者在不使用spring的框架中使用aop的功能,该怎么办呢?

AspectJ简介

在这里插入图片描述

spring aop集成了AspectJ(可以和java编程语言无缝结合的一个面向切面编程的可扩展框架)

AspectJ的使用实例

Eclipse Marketplace安装插件AJDT

在这里插入图片描述

创建Aspect工程

在这里插入图片描述

创建AspectJ测试

在这里插入图片描述

创建一个切面Aspect文件

在这里插入图片描述

.aj文件

在这里插入图片描述

运行HelloAspectJDemo的java程序,结果为:

在这里插入图片描述

不使用spring的aop功能实现日志输出

第一种

public class TimeBook {undefined
 private Logger logger = Logger.getLogger(this.getClass().getName());
 //审核数据的相关程序
 public void doAuditing(String name){undefined
  logger.log(Level.INFO, name + "开始审核数据...");
  System.out.println("审核程序");
  logger.log(Level.INFO, name + "审核数据结束...");
 }
}
//TestHelloWorld.java
package com.GC.test;
import com.gc.action.TimeBook;
public class TestHelloWorld {undefined
 public static void main(String[] args){undefined
  TimeBook timeBook = new TimeBook();
  timeBook.doAuditing("张三");
 }
}

第二种:通过面向接口编程实现日志输出

public class TimeBook implements TimeBookInterface {undefined
 //审核数据的相关程序
 public void doAuditing(String name){undefined
  System.out.println("审核程序");
 }
}
//TimeBookProxy.java
package com.gc.action;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import com.gc.impl.TimeBookInterface;
public class TimeBookProxy {undefined
 private Logger logger = Logger.getLogger(this.getClass().getName());
 private TimeBookInterface timeBookInterface;
 //在该类中针对前面的接口TimeBookInterface编程,而不是针对具体的类
 public TimeBookProxy(TimeBookInterface timeBookInterface){undefined
  this.timeBookInterface = timeBookInterface;
 }
 //实际业务处理
 public void doAuditing(String name){undefined
  logger.log(Level.INFO,"开始审核数据 "+name);
  timeBookInterface.doAuditing(name);
  logger.log(Level.INFO,"审核数据结束 "+name);
 }
}
public class TestHelloWorld {undefined
 public static void main(String[] args){undefined
  TimeBookProxy timeBookProxy = new TimeBookProxy(new TimeBook());
  timeBookProxy.doAuditing("张三");
 }
}

第三种:使用java的代理机制进行日志输出

public class LogProxy implements InvocationHandler{undefined
 private Logger logger = Logger.getLogger(this.getClass().getName());
 private Object delegate;
 //绑定代理对象
 public Object bind(Object delegate){undefined
  this.delegate = delegate;
  return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),
    delegate.getClass().getInterfaces(),this);
 }
 //针对接口编程
 public Object invoke(Object proxy,Method method,Object[] args) throws Throwable {undefined
  Object result = null;
  try{undefined
   //在方法调用前后进行日志输出
   logger.log(Level.INFO,args[0]+" 开始审核数据...");
   result = method.invoke(delegate, args);
   logger.log(Level.INFO,args[0]+" 审核数据结束...");
  }catch(Exception e){undefined
   logger.log(Level.INFO,e.toString());
  }
  return result;
 }
}
//TimeBookInterface.java
package com.gc.impl;
//针对接口编程
public interface TimeBookInterface {undefined
 public void doAuditing(String name);
}
//TimeBook.java
public class TimeBook implements TimeBookInterface {undefined
 //审核数据的相关程序
 public void doAuditing(String name){undefined
  System.out.println("审核程序");
 }
}
//TestHelloWorld.java
public class TestHelloWorld {undefined
 public static void main(String[] args){undefined
  //实现了对日志类的重用
  LogProxy logProxy = new LogProxy();
  TimeBookInterface timeBookProxy = (TimeBookInterface)logProxy.bind(new TimeBook());
  timeBookProxy.doAuditing("张三");
 }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 如何在不使用spring框架中使用aop的功能

本文链接: https://www.lsjlt.com/news/161469.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在不使用spring框架中使用aop的功能
    目录spring提供了两种方式的AOP使用使用xml配置方式使用注解方式AspectJ简介AspectJ的使用实例不使用spring的aop功能实现日志输出第一种第二种:通过面向接口...
    99+
    2022-11-12
  • 怎么在不使用spring框架中使用aop的功能
    本篇文章为大家展示了怎么在不使用spring框架中使用aop的功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Spring框架的AOP机制可以让开发者把业务流程中的通用功能抽取出来,单独编写功能代...
    99+
    2023-06-22
  • 如何在PHP中使用AOP框架
    AOP(面向切面编程)是一种编程思想,用于解耦业务逻辑和横切关注点(如日志、权限等)。在PHP中,使用AOP框架可以简化编码,提高代码可维护性和可扩展性。本文将介绍在PHP中使用AOP框架的基本原理和实现方法。一、AOP的概念和原理面向切面...
    99+
    2023-05-19
    框架 PHP aop
  • J2EE中使用Spring AOP框架和EJB组件(3)
    J2EE中使用Spring AOP框架和EJB组件(3)[@more@]此外还要注意,我们重写了setSessionContext()方法,以便告诉AbstractStatelessSessionBean跨所有EJB bean使用Sping...
    99+
    2023-06-03
  • J2EE中使用Spring AOP框架和EJB组件(1)
    J2EE中使用Spring AOP框架和EJB组件(1)[@more@]本文介绍了一种把J2EE应用程序中的EJB转换为Spring托管组件的方法,以及转换之后可以采用的强大技术。它还给出了几个实际的例子,说明如何借助于Spring的AOP...
    99+
    2023-06-03
  • 如何在Spring框架中使用NumPy?
    Spring框架是一个非常流行的Java开发框架,而NumPy则是一个Python科学计算库。虽然它们似乎没有直接的关系,但是在某些情况下,我们可能需要在Spring框架中使用NumPy。本文将介绍如何在Spring框架中使用NumPy,...
    99+
    2023-07-30
    spring numpy npm
  • 如何在Spring框架中使用Python的NumPy API?
    Spring框架是一款非常流行的Java开发框架,它提供了丰富的功能和组件,可以帮助开发者快速构建高质量的Java应用程序。而Python的NumPy API是一款非常强大的科学计算库,它提供了丰富的数学函数和数据结构,可以帮助开发者更加高...
    99+
    2023-09-26
    api numpy spring
  • Spring AOP如何在java项目中使用
    这篇文章将为大家详细讲解有关Spring AOP如何在java项目中使用 ,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、什么是AOP  AOP(Aspect Oriented ...
    99+
    2023-05-31
    java spring aop ava
  • 怎么在java中使用Spring框架
    怎么在java中使用Spring框架?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统...
    99+
    2023-06-14
  • Spring security框架如何使用
    本篇内容介绍了“Spring security框架如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简介Spring Secu...
    99+
    2023-07-05
  • 如何使用Python来提高Spring框架的性能?
    好的,下面是文章的内容: Spring框架是一个非常流行的Java企业级应用程序开发框架,它提供了丰富的特性和功能,让开发者可以快速构建高效的应用程序。然而,在处理大量数据时,Spring框架的性能可能会受到影响。本文将介绍如何使用Pyth...
    99+
    2023-09-16
    bash spring load
  • 如何使用Python在LeetCode上加载Spring框架?
    LeetCode是一家面向程序员的在线编程平台,通过该平台,程序员可以学习算法和数据结构,提高自己的编程能力。而Spring框架则是一款非常流行的Java开发框架,它提供了很多方便的功能,可以帮助程序员快速开发高质量的Java应用程序。本...
    99+
    2023-06-17
    leetcode load spring
  • 如何在 PHP 和 JavaScript 中使用 Spring 框架构建 API?
    Spring框架是一个流行的Java框架,用于构建Web应用程序和API。它提供了许多方便的功能和工具,可以帮助开发人员快速构建高质量的应用程序。在本文中,我们将讨论如何在PHP和JavaScript中使用Spring框架构建API。 安...
    99+
    2023-11-03
    javascript spring api
  • Spring框架如何使用二维码?
    随着移动互联网的快速发展,二维码已经成为了一种非常流行的信息识别方式。在很多场景下,我们都可以看到二维码的身影,比如在超市、商场、地铁站等公共场所,我们可以通过扫描二维码获取更多的信息或者完成一些交易操作。在这篇文章中,我们将介绍如何在S...
    99+
    2023-10-21
    二维码 spring leetcode
  • Spring如何使用Validation验证框架
    这篇文章主要介绍了Spring如何使用Validation验证框架,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、介绍Spring Validation 验证框架对参数的验...
    99+
    2023-06-20
  • Spring Retry重试框架如何使用
    这篇“Spring Retry重试框架如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spring ...
    99+
    2023-07-04
  • 如何在 Python 中使用 Spring 框架的文件上传组件?
    Spring 是一个非常流行的 Java 开发框架,它提供了一系列的组件和工具来帮助开发者快速构建高效、可维护的应用程序。其中,文件上传组件是一个非常实用的组件,它可以帮助我们在应用程序中实现文件上传功能。 那么,在 Python 中如何...
    99+
    2023-09-04
    文件 关键字 spring
  • 如何在 Spring 框架中集成自然语言处理功能?
    Spring 框架是一个流行的 Java 开发框架,它提供了一种方便的方式来开发企业级应用程序。在今天的商业环境中,自然语言处理(NLP)是一个关键的技术,它可以帮助企业在处理和分析大量文本数据时更加高效。本文将介绍如何在 Spring 框...
    99+
    2023-10-08
    框架 自然语言处理 spring
  • 如何使用 Spring 框架在 Go 项目中建立索引?
    Spring框架是一个非常流行的Java框架,它提供了很多强大的工具和功能,可以帮助开发者快速构建高效的Java应用程序。但是,在一些Go项目中,我们也想使用Spring框架来建立索引,这该怎么做呢?下面,我将介绍如何使用Spring框架在...
    99+
    2023-10-19
    索引 教程 spring
  • 你知道如何在Spring框架中使用Java函数吗?
    Spring框架是目前应用较广泛的Java开发框架之一。它提供了许多方便的功能和工具,使得Java开发变得更加高效和便捷。在Spring框架中,我们可以使用Java函数来实现一些常见的操作,如数据处理、业务逻辑处理等。本文将介绍如何在Spr...
    99+
    2023-09-16
    函数 spring 框架
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作