当前位置: 首页 > 网络应用技术

弹簧源代码AOP使用

时间:2023-03-09 11:54:27 网络应用技术

  我们都知道,Java是一种面向对象的语言,因此可以称呼所有内容。但是有一些缺点:当您需要将相同的公共行为引入没有继承的多个对象时,例如日志,安全检测等。,我们只能在每个对象行为中介绍这一公众,这会生成很多重复的代码,并且耦合程度将非常高,这不利于维护。因此,它正面临着剪切的方向()编程。可以说,通过AOP使对象更加完美,它是对其的补充。AOP注意的方式是水平的。与OOP的垂直方向不同,让我们在春季详细解释AOP。

  让我们从动态AOP开始

  Spring过去改变了最原始,最复杂的配置方法。目前,注释方法用POJO标记,POJO极大地简化了AOP的工作。周围...之前和周围...之后

  expactjtest代码

  请注意图纸文件中的陈述和命名空间:

  运行结果如下:

  从上面的代码可以看出,春季增强了所有类的测试方法,因此可以独立地将辅助功能(日志等)独立出现,并且也了解程序的耦合和扩展。实施AOP实施我们知道Spring是一个支持注释文件注释的AOP,也就是说,当配置文件具有此语句时,Spring将支持注释的AOP,因此分析从这里开始。

  我们知道,如果声明了自定义注释,则在春季进行自定义注释,则必须在弹簧中注册的位置中的相应解析器。我们从:

  在弹簧源代码中搜索全局搜索,我们在袋中发现了``org.springframework.ap ap.config'aopnamespacehandler`,然后打开此类搜索。

  在课堂上,我们找到了这个功能

  从上面的代码可以看出,当分析分析配置文件时,一旦遇到,您将使用解析器进行分析。接下来,我们功能的具体实现:

  所有解析器均由接口实现,入口始于该功能。AntotationAwectJautoproxyCreator的解析功能如下:如下:

  从上面的代码中,我们可以看到该方法中实现了特定的实现逻辑,并继续输入函数方法:

  可以看出,源代码可以在函数中完成,主要是三件事,基本上是每行代码之一。

  在功能的功能中寄存

  AOP的实现基本上是由AnnotationAspectjautoproxycreator完成的。它可以与与注释定义的代理相匹配的bean匹配。我继续跟进方法:

  在上面的代码中,我们看到该功能并继续跟进:

  同时,我们还必须查看班级中的代码:

  以上代码实现了自动注册类的功能。同时,它也被设计为优先问题。假设如果已经存在自动代理创建,并且现有的自动代理创始人与当前不一致,那么您需要根据优先级判断以判断哪个人要使用的是

  处理代理 - 目标级和公开proxy属性Useclassproxyifnextary(ParserContext.get Regentry(),sourceEllement);这部分使代理目标级和公开了式式式式式式。

  上述代码中使用的两种强制性使用方法**是`forceautoproxycreateseclassssssssssssssssssssssproxying`和forceautoprotoeeeeeeeeeeeeeeeeeeeeeeeeproxy'。强制使用过程也是设置过程。这两个函数的具体实现如下。

  让我们谈谈这两个属性

  当您使用并自动支持支持时,您可以以以下方式设置它

  这里指的是目标对象,因此请致电。B不会执行B的交易,也就是说,交易不会得到增强。为了解决此问题,我们可以做到这一点:

  然后将上述代码中的``this.b()`修改为(asservice)aopcontext.currentproxy())。b()`。

  通过上述修改,您可以在增强时完成该方法的配对和方法

  只需谈论JDK动态代理的CGLIB代理