使用AspectJ的Spring依赖注入

piwo6bdm  于 2023-06-28  发布在  Spring
关注(0)|答案(1)|浏览(125)

目前我正在阅读一些关于Quarkus的文档,其中他们不断攻击Spring的依赖注入DynamicProxy机制。
我在引用
Spring为接口和开发人员添加到接口的任何其他方法声明创建实现代理。接口中附加方法的定义,包括方法名、返回类型和方法参数,都是非常重要的:它们影响动态创建的代理的实现。这种运行时代理有助于延长启动时间并增加内存使用量。
我不知道Spring AOT与Sping Boot 3.x / Spring 6.x有什么不同,但如果我没记错的话,在Spring中使用AspectJ Load Time Weaving可以进行依赖注入。
目前我能找到的关于它的文档只有using aspectjUsing AspectJ to dependency inject domain objects with Springaop,特别是第二个链接非常旧,来自Spring 3.0.0-RC 3,第一个链接包含非常相似的信息。
所以我的问题是,“在AspectJ的帮助下,Sping Boot 3.x / Spring 6.x仍然可以进行依赖注入吗?”
我在Sping Boot 中使用'@Configuration'和'@Bean'注解进行Bean配置,所以我从来没有使用过@Configurable,当然如果我正在寻找Spring Boot应用程序的启动时间改进,Load Time Weaving是行不通的,但如果我可以将其转换为编译时编织,我认为我可以缩小与Quarkus的性能差距,而Spring的DynamicProxy / CGlib代理总是在运行时发生,如果Spring没有不要为它改变AOT中的任何东西,这对Spring来说总是不利的。
那么,这些技术在Sping Boot 3.x / Spring 6.x中仍然可用吗?或者这些技术已经过时了。

k97glaaz

k97glaaz1#

在当前的Spring版本中,无论有没有 Boot ,您仍然可以使用与以前相同的选项。也就是说,你仍然可以通过load-time或compile-time weaving使用Spring AOP(基于代理)而不是原生AspectJ:

  • 您已经找到手册第Using AspectJ with Spring Applications章。在本章的开头,有一个使用AspectJ使用Spring依赖注入域对象。你怎么会没看到呢?它是字面上的第一个子章节后介绍性文字段落,没有5厘米以下的章节开始。
  • Spring AOP章节Aspect Oriented Programming with Spring也很容易找到。如果你花了不超过10秒钟的时间来看目录,那就不可避免地会看到它。

我并不想显得不友好,但是我不禁想知道,如果您甚至不能浏览您已经作为第一个链接发布的精心编排的Spring手册,那么您如何成为一名程序员。也许下一次,只要给予它一分钟的下沉,并试图让您的轴承时,打开一个手册。

相关问题