AspectJ 加载时间编织不适用于 Spring beans

2024-04-26

我正在开发一个项目,该项目使用 Spring 配置的 Java(而不是 xml)风格来连接依赖项。它还具有分析逻辑,应通过 AspectJ 将其编织到所需的方法上(通过注释)。设置正在运行,我可以看到我想要的包中的类正在编织,并且分析信息已从其中注销。

问题是编织不起作用@Bean类。我已经启用了调试aop.xml via:

<weaver options="-XnoInline -Xreweavable -verbose -debug -showWeaveInfo">

我可以看到我想要的包中的类正在被编织,但看不到配置中的 bean。如果我直接实例化这些类(而不是注入它们),编织就可以工作。

不幸的是,我不能在这里发布真正的代码,但这里有一个简单的例子:

@Configuration
@EnableLoadTimeWeaving(aspectjWeaving = EnableLoadTimeWeaving.AspectJWeaving.ENABLED)
public class MySpringConfig {
    @Bean
    AnnotatedClass1 annotatedClass1() {
        return new AnnotatedClass1(new AnnotatedClass2());
    }
}

AnnotatedClass1 and AnnotatedClass2住在同一个包中,编织工作在直接实例化的包上,而不是由 bean 返回的包上。

我已经搜索过Spring AOP 文档 http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/aop.html#aop-aj-configure但我似乎找不到与此相关的任何内容。您需要对自动代理执行一些魔法,并对 SpringAOP 执行一些限制,但据我所知,加载时编织应该可以正常工作 - 例如,我已经尝试过私有方法,并且它有效。


问题是返回类型 - 如果我这样做:

@Bean
Object annotatedClass1() {
    return new AnnotatedClass1(new AnnotatedClass2());
} 

编织也开始对豆子起作用。我最初的假设是,这与 Spring 缓存 bean 而不是使用编织版本有关,但这没有意义,因为:

  • 加载时间编织应该在……类加载时间起作用:)。然后,无论方法返回什么,类都应该具有方面。
  • 我实际上已经检查了 Spring 和 AspectJ 的调试输出,但没有提及我的类,因此它一定以某种方式被忽略了。

这是我第一次使用这个东西,所以我可能会误解一些东西。如果有人可以解释为什么返回类型@Bean方法与编织有关,我很乐意接受你的答案,而不是这个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AspectJ 加载时间编织不适用于 Spring beans 的相关文章

随机推荐

  • 搜索拥有超过十亿条记录的数据库的最有效方法?

    我的客户有一个巨大的数据库 仅包含三个字段 主键 无符号数 姓名 多字文本 描述 最多 1000 个 varchar 该数据库拥有超过数十亿条条目 我以前没有处理如此大量数据的经验 他希望我设计一个使用 AJAX 如 Google 的界面来
  • 具有自托管代理的 Azure DevOps Pipeline for Java 项目

    我们有一组使用不同 JDK 版本开发的 Java 项目 项目中使用了不同版本的 Gradle 和 Maven 我们应该使用以下命令创建 Azure DevOps PipelineSelf Hosted Agent截至目前 构建代理服务器已随
  • Visual Studio 2015 - C# Windows 通用应用程序缺少程序集引用

    今天 我将我的 Windows 通用应用程序项目从 github 克隆到运行新安装的 Visual Studio 2015 的新计算机上 项目加载后 我注意到我的所有页面和属性都带有红色下划线 并且有许多错误 CS0246 C The ty
  • Microsoft 的 STL::list::sort() 使用哪种排序算法?

    注 我不小心发帖了这个问题 https stackoverflow com questions 1717773 which sorting algorithm is used by stls listsort没有指定我正在使用哪个STL实现
  • John Resig 的 Javascript 继承片段是否已弃用?

    我正在寻找一种简单的方法来创建两个类 一个类继承另一个类 子类重新定义父类的方法之一 并在新方法中调用父类的方法 例如 有一个班级Animal and Dog 其中 Animal 类定义了一个方法makeSound 它建立了如何输出声音 然
  • 如何处理Kafka流中的不同时区?

    因此 我正在评估 Kafka Streams 及其功能 看看它是否适合我的用例 因为我需要每 15 分钟 每小时 每天聚合传感器数据 并发现它由于其窗口功能而很有用 因为我可以通过应用创建窗口windowedBy on KGroupedSt
  • CSS 可调整大小的带标题的图像

    我正在尝试获取并排显示的两个图像的 HTML 布局 并填充页面 同时保持其纵横比并保持图像彼此相邻 即不在页面每一半的中心 我还想要顶部有一个标题 我几乎已经使用下面的 CSS hackery 实现了这一目标 目前它看起来像这样 如果我水平
  • 使用python远程执行shell脚本

    有没有一种方法可以让我在 Windows 上使用 Python 来执行位于远程 Unix 计算机上的 shell 脚本 P S 抱歉编辑晚了 我确实知道 Paramiko 但我想知道是否有办法在没有它的情况下做到这一点 对于初学者来说 可以
  • Roslyn 脚本:运行时异常的行号信息

    我正在摆弄 Roslyn 脚本的东西 使用Microsoft CodeAnalysis CSharp Scriptingnuget 包 我想知道是否有一种方法可以将行号信息添加到堆栈跟踪中 以了解脚本内发生的异常 当我运行以下 C 代码时
  • 如何执行更新UI视图Android的后台作业[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在我的 Android 应用程序中 我有一个带有视图的活动 例如 在活动开始或创建主布局时 我想启动一个后台作业 每 5 秒从主布局更
  • CLOB 与 VARCHAR2 以及还有其他替代方案吗?

    我正在为我的应用程序使用 DevArt 的 dotConnect 和 Entity Developer 我已经使用实体优先功能创建了表 我注意到许多列类型都设置为 CLOB 我只有 MySQL 和 Microsoft SQL Server
  • 如何在按下/单击 TextField 时使用 TextFieldValue (带 FocusRequester)将光标设置到文本的任何部分

    我试图环顾四周 但找不到办法 force a focus set the cursor到文本末尾 并且仍然能够设置cursor到文本的任何部分时 按下 点击 With FocusRequester光标设置在文本的开头 但是TextField
  • Spring框架中Service和DAO接口的主要用途是什么?

    我是 Spring 框架的新手 我在谷歌上搜索了很多关于 spring mvc 的网站 我注意到为每个服务和 dao 创建了接口 但我有一些疑问如下 1 为每个service和dao创建接口的主要目的是什么 2 spring mvc的项目结
  • SQL Server VSS 编写器拒绝启动

    我已在 Windows 7 64 位计算机上安装了 Visual Studio 2012 我正在尝试安装 SQL Server Express LocalDB 但当安装程序尝试启动服务时出现错误 这是确切的错误消息 服务 SQL Serve
  • 日期时间类型转换器

    我有下面的代码将字符串转换为 T 类型 它适用于所有其他类型 但当 T 为 DateTime 类型时会出现错误 TypeConverter c TypeDescriptor GetConverter typeof T return T c
  • Avro 架构和生成的文件中的十进制数据类型支持

    这个问题涉及 Avro 版本 1 8 1 我们的 AVRO 模式中有以下字段 name sale price type bytes null logicalType decimal precision 18 scale 17 如您所见 该字
  • scalaz 中的 Store 是什么

    我试图理解Lenses in scalaz 令人惊讶的是没有找到类似的东西cats core 我遇到了所谓的Store这是一个类型别名 type StoreT F A B IndexedStoreT F A A B type Indexed
  • 如何在 Cython 中传递指向 c 函数的指针?

    我正在尝试打电话qsort在 Cython 中使用自定义比较函数 但我不明白如何传递函数引用 首先 我有一个结构 cdef struct Pair int i j float h 比较函数排序依据h cdef int compare con
  • javascript旋转数组元素[重复]

    这个问题在这里已经有答案了 大家好 我有一个任务 我有一个数组 4 7 3 6 9 我必须创建一个像这样的数组 4 7 3 6 9 9 4 7 3 6 6 9 4 7 3 3 6 9 4 7 7 3 6 9 4 我必须编写一个程序 其中数组
  • AspectJ 加载时间编织不适用于 Spring beans

    我正在开发一个项目 该项目使用 Spring 配置的 Java 而不是 xml 风格来连接依赖项 它还具有分析逻辑 应通过 AspectJ 将其编织到所需的方法上 通过注释 设置正在运行 我可以看到我想要的包中的类正在编织 并且分析信息已从