java项目怎么做aop,Java项目怎么做读写分离

本文目录一览:

java开发中常用aop吗

AOP切面算是比较理论的东西,使用较少,属于总结出来的理论,大多数人都知道,但不会专门地使用,一般都是默认会操作。比如将一些通用的方法单独写一个类,这些都是写代码时候自己会用的,并不算是很特别、专门拿出来使用、研究的工具

工作中java开发,使用最多的为增删改查,其次是用debug来调试程序解决问题,联调测试等等。

介绍几个JAVA的AOP框架开源项目

基于Java的简单、动态、轻量级、强大的AOP框架。既强大又简单,有助于更容易的集成AOP到新的或已存在的项目中。

AspectWerkz 主要特性: 

1. 运行时和加载时字节码修正:你可以在运行时或编译时轻松的改造任何(旧)应用程序或除了rt.jar以外的外部类库

2. 支持join point模型

3. 支持Annotation:匹配JavaDoc和JSR-175,支持用户自定义Annotation

4. 支持部署多个Aspect定义文件到部署的应用程序(WEB-INF/aop.xml、META-INF/aop.xml)

5. Introduction/内类型声明(也称Mixin),也就是具有添加接口和实现到已存在的类中的能力

6. Annotation定义:定义Aspect使用的运行时Annotation(为JSR-175准备)

7. XML定义:定义Aspect使用的XML;XML可以用来精炼、改写和解析Annotation定义

8. 插件式Aspect管理器能够和IoC框架(如Spring或PicoContainer)一起工作

9. 四种不同的Advice和Introduction部署模型(范围):perJVM(单模式)、 perClass、perInstance 和perThread 

10. Advice和Introduction能够动态部署、反部署或重新部署

11. 高性能,使用JIT编译

12. 使用Fine-grained模式语言选择join point

13. 所有Advice能够和所有的join point和各种混合类型的pointcut

14. 脱机变换(可以用作后处理器)

15. Aspect、Advice和Introduction使用POJO编码 

16. 目标类可以是正规的POJO,也就是不需要接口

17. 支持通过定义传递参数给Advice和定义可重用的Advice堆栈

18. 元数据被加到类中

19. 简单的用法和配置

AspectWerkz在Eclipse下的辅助开发插件→

更多AspectWerkz信息

JBoss AOP

JBoss 4.0带了一个AOP框架。这个框架和JBoss应用服务器紧密地结合,但是你也能够在你的应用中,单独的运行它。

更多JBoss AOP信息

Nanning

一个虽然简单但也是一个java开源的AOP框架。名字以中文的拼音拼写就是广西的南宁。

更多Nanning信息

JAC

JAC (Java Aspect Components)是一个应用服务器。它为Java2平台、用于Java开发的企业开发环境(J2EE)、和基于Web的分布式应用,提供开放式资源的又一个选择(在GNU次常规公共许可证下发布)。JAC包括统一模型语言(UML)IDE,该UML IDE模块化应用商业逻辑并且自动生成和编译纯商业逻辑Java类。这些类,在JAC容器内执行,可从一组技术和/或商业的横切关系(crosscutting concerns)[1] 如数据持久性、认证、配置文件管理、访问权限检测、演示、和负载平衡中无缝地受益。基于面向方面编程技术(AOP)的JAC将这些关系( concerns)[2]从应用程序的核心商业逻辑中分离出来。

更多JAC信息

DynamicAspects

DynamicAspects能够让你使用java编写的面向切面的程序设计,它使用在Sun JDK 1.5中介绍的”instrumentation”与”agent”,Aspects能够软件各模块之间的关系在运行期安装与使用。

更多DynamicAspects信息

dynaop

dynaop框架使用一个基于运行时的编程机制将AOP代码插入对象中,而不是返回一个具有特征代码的对象。AOP将是面向对象设计(OO)的一个新的领域。

更多dynaop信息

CAESAR

CAESAR是一个新的与Java兼容的AOP语言。所有java程序多能使用CAESAR。

更多CAESAR信息

PROSE

PROSE是一个动态编排(weaving)工具(允许在运行期插入或抽取aspects)。PROSE aspects是规则的Java对象能够被发送到或从网络上的计算机接收。签名可被用于保证它们的完整性。一旦一个aspect插入到JVM中,任何事件的发生将影响在相应aspect advice执行的结果。假如一个aspect从JVM中撤消,aspect代码将被丢弃并且相应的拦截也将不会再发生。PROSE aspects是规则的Java对象能够被发送到或从网络上的计算机接收。签名可被用于保证它们的完整性。一旦一个aspect插入到JVM中,任何事件的发生将影响在相应aspect advice执行的结果。假如一个aspect从JVM中撤消,aspect代码将被丢弃并且相应的拦截也将不会再发生。下图是PROSE的体系结构图:

更多PROSE信息

FastAOP

FastAOP是一个高性能AOP框架。最初开发该框架是为了支持对大型J2EE应用程序进行性能剖析和监测。它几乎不占用运行时间。FastAOP已经在Websphere和Jboss应用服务器上得到成功测试。

更多FastAOP信息

Plastic

Plastic是一个构建在ASM 3.3之上的AOP工具包。支持类的基本加载和实例化。引进新的属性。不需要使用反射就能够访问私有属性和方法。重写属性访问权限。注入属性。Method advice(在调用现在方法之后/之前执行一些逻辑)。DIV class=date收录时间:2011-05-25 15:25:03/DIV

更多Plastic信息

如何用Java动态代理实现AOP

在目前的Java开发包中包含了对动态代理的支持,但是其实现只支持对接口的的实现。 其实现主要通过是java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口。 Proxy 类主要用来获取动态代理对象,InvocationHandler接口用来约束调…

北大青鸟java培训:动态SpringAOP的是如何实现的?

SpringAOP是利用代理模式,在运行时生成一个目标对象的代理,并且使用代理代替目标对象,整个过程对使用者透明,使用者无法像使用目标对象一样使用代理对象,代理对象类型是目标对象所属类的子类或者接口实现,宁夏IT培训认为这个子类也是在运行时动态生成,这个生成子类的过程使用操作字节码技术,Spring框架中使用两种字节码技术:JDK动态代理和CGLIB,当目标类实现了接口时使用JDK动态代理,否则使用CGLIB代理。

AOP的实现包含下面几个步骤:根据配置或注解解析切面。

生成AOP代理对象,给目标对象生成一个代理类以及代理类实例,根据解析出的切面,生成通知链设置到代理对象,在代理的回调中会执行通知链。

把AOP代理对象注册到容器中代替目标对象,当使用者向容器请求目标bean时,容器会返回代理对象。

 下面对这几个步骤逐一的分析。

切面解析在分析切面解析过程之前,首先先了解一下几个关键的接口,看下面的类图。

PointCut:描述切点,在进行切点匹配时,使用ClassFilter进行类匹配,MethodMatcher进行执行方法匹配。

Advice:通知,AfterAdvice后通知,BeforeAdvice前通知,DynamicIntroductionAdvice引用通知,环绕通知通过Interceptor实现。

Advisor:通知器,也就是切面,PointcutAdvisor切点通知器,IntroductionAdvisor引用通知器。

 在创建AOP代理之前需要把相关的切面配置解析成上面类图中的接口子类的对象,对于ProxyFactoryBean来说,没有这个过程,因为这种方式下不能使用切点。

切面解析完成之后,把解析出的通知添加通知链中,AOP代理对象引用该通知链执行切面通知逻辑。

对于aop标签方式和注解方式添加通知链这个动作的代码是类似的,解析切面这个过程有些差异。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/150394.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-08 14:53
下一篇 2024-11-08 14:53

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • 掌握magic-api item.import,为你的项目注入灵魂

    你是否曾经想要导入一个模块,但却不知道如何实现?又或者,你是否在使用magic-api时遇到了无法导入的问题?那么,你来到了正确的地方。在本文中,我们将详细阐述magic-api的…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29

发表回复

登录后才能评论