Spring 应用程序中非 Spring Bean 的加载时间编织

2023-12-14

我有一个带有一些 REST 控制器、服务类和帮助程序类的 Spring Boot 应用程序。控制器和服务类是 spring 管理的,而辅助类不是 spring 管理的,并且大多包含静态方法。

AspectJ 配置存在于 java 配置中,如下所示

@Configuration
@EnableLoadTimeWeaving(aspectjWeaving = AspectJWeaving.ENABLED)
public class AspectConfig {

    @Bean
    public LoggingAspect loggingAspect() {
        return new LoggingAspect();
    }
}

对应的LoggingAspect类如下,

@Aspect
public class LoggingAspect {

    @Before("allMethodsPointcut()")
    public void logBeforeMethod(JoinPoint joinPoint) {
        System.out.println("Entering Method - " + joinPoint.getSignature().getDeclaringType() + "::" + joinPoint.getSignature().getName());
    }

    @After("allMethodsPointcut()")
    public void logAfterMethod(JoinPoint joinPoint) {
        System.out.println("Exiting Method - " + joinPoint.getSignature().getDeclaringType() + "::" + joinPoint.getSignature().getName());
    }

    @Pointcut("execution(* com.test.controller..*(..)) || execution(* com.test.service..*(..)) || execution(* com.test.helper..*(..))")
    public void allMethodsPointcut() {
    }
}
  • 当调用控制器时,启用方面的日志记录适用于控制器和服务功能,但不适用于帮助程序功能。
  • 如果我们在控制器中自动装配帮助程序类,非静态帮助程序方法将开始显示aspectj 日志。但是,静态帮助器方法仍然不显示aspectj日志

问题, 1.我们如何为非spring管理的类(即没有@Bean、@Autowired、@Component等)配置aspectj建议。 2.我们如何为静态方法配置aspectj建议(我正在使用@EnableLoadTimeWeaving但也许我遗漏了一些东西) 3.如果可能的话,AspectJ配置应该基于java

如果需要更多详细信息,请告诉我


Use -javaagent:/path/to/aspectjweaver-<version>.jar作为 JVM 的启动参数以启用加载时编织。消除@EnableAspectJAutoProxy从你的 spring 配置中,这样 spring 就不会尝试使用它自己的 Spring AOP 框架而不是纯 AspectJ。 (可选)创建META-INF/aop.xml. Add @EnableSpringConfigured如果你想将 spring 配置应用于不受 spring 管理的 bean (@Configurable POJOs).

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

Spring 应用程序中非 Spring Bean 的加载时间编织 的相关文章

随机推荐

  • mex 无法识别内联

    我正在尝试编译libdc1394 的 matlab 包装器这是火线相机的库 我收到一个奇怪的错误 涉及头文件中的一些内联函数 我正在使用 gcc 4 6 开发 ubuntu 12 04 我已经成功编译了其他 mex 文件 这个包装器在 Ma
  • 将 Unity 应用程序集成到现有 iOS 应用程序

    我有一个从 Unity 5 导出的 iOS 应用程序 并且我还使用 vuforia 将 ar 添加到该 Unity 应用程序中 现在我想将 Unity 应用程序集成到我现有的 iOS 应用程序中 我已关注http www the nerd
  • 是否有必要为只读线程和只写线程创建互斥体?

    有2个线程 一个只读取signal 另一个只设置signal 是否有必要创建互斥体signal原因是什么 UPDATE 我所关心的是如果两个线程同时读取 设置它是否会崩溃 您可能希望为此使用原子变量 尽管互斥体也可以工作 问题在于 无法保证
  • 保持纵横比和固定高度

    所以我想保持一个特定的纵横比div 其中高度是固定的 过去我曾经这样做过 但只有在使用固定宽度时才这样做 one one position relative one one before display block content widt
  • 等待“正在加载”图标从页面上消失

    我们正在为 Web 应用程序进行自动化 大多数场景都会在页面中心出现一个加载图标 我们需要等待这个加载图标消失 HTML div style display none div div div div 示例 我们在大多数场景下都有搜索功能 当
  • Phonegap 文件上传 Java 服务器

    我正在尝试在 Java 服务器上上传图像 该文件正在从 Android 设备传输 但在服务器上保存 null 这是服务器代码 public UploadMediaServerResponse uploadFileForFunBoard Fo
  • Xamarin 自定义视图 ClassNotFoundException

    我是 Xamarin 的新手 我试图在 Android 应用程序中创建自己的视图 但它在构造函数上抛出 ClassNotFoundException 我正在寻找类似的问题 但没有找到类似的问题 仅here我认为可能非常相似 但实际上并没有解
  • 如何用bindvalue和%准备语句?

    是的 当我尝试对之前看起来像这样的变量使用绑定值时 我遇到了问题 users firstname LIKE firstname 现在看起来像这样 users firstname LIKE firstname 但还是不行 也试过了 users
  • 无法使用代理设置连接到 SOAP API

    我正在使用 requests 和 zeep 库通过 SOAP API 连接到服务器 如果我手动设置互联网代理 我可以连接 但是 我打算在脚本中使用代理设置来自动化该过程 我正在使用以下代码块来执行此操作 但出现以下错误 谁能帮助我 我在哪里
  • SQL有多少条记录以相同字母开头

    所以我在数据库的 A 列中有数千条记录 我想看看有多少个字母以字母开头 以及所有个位数 所以我需要一个计数和与之相关的字母 我还想查看所有两个字母数字组合 即 aa ab ac ad ae 等及其计数 还有三个和四个字符等 一般情况下你可以
  • 如何阻止光标跳到末尾?

    我正在使用 Antd 输入库 每当我在单词的开头或中间输入时 我的光标就会跳到结尾 const handleOpenAnswer key value gt handleFieldChange settings settings key va
  • 如何在 Spring Boot 应用程序中使用 Hibernate Validation 进行 Bean 验证?

    我正在 Spring Boot 应用程序中学习 Hibernate 验证 并且我有一个 Rest 控制器和一个 POST 方法 当我发出请求时 如果某个字段未成功验证 客户端应该收到 400 Bad Request 并在正文中收到类似 验证
  • WPFToolkit DataGrid:组合框列不会立即更新选定值绑定

    我正在使用 WPF 工具包 DataGrid 和 DataGridComboBoxColumn 一切正常 除了当组合框上发生选择更改时 选定的值绑定源不会立即更新 仅当组合框失去焦点时才会发生这种情况 有没有人遇到过这个问题并有任何建议的解
  • 无法使用 Element.getAttribute() 获取元素值

    我想读取 xml 文件 我找到了一个很好的示例 直到 xml 元素没有任何属性 当然 我尝试过如何读取属性 但它不起作用 例如 XML
  • MS Dynamics CRM Online 2011 - 身份验证问题

    我是 Dynamics crm online 2011 的新手 虽然我一直在研究 SDK 示例代码 但我试图找到最简单的方法来执行与我们的在线 Dynamics CRM 服务的基本身份验证连接 并推送一些非常基本数据到我创建的自定义实体 扩
  • 圆圈未显示在 JPanel 中

    所以我试图在里面画圆圈inner控制板 我有一堂课 paintTimeUnit给定 xy 坐标对 在面板内创建圆圈 但每当我创建一个新的paintTimeUnit对象并将其添加到面板中 它似乎没有显示 public class paintT
  • ember.js 还支持 ObjectController 吗?如果不是,用什么来替代它?

    我正在尝试学习一些 Ember js 虽然我意识到一切都在变化 但似乎 Sproutcore 2 指南中的这段代码 链接到 Ember js github 自述文件 并没有继续工作 App userController SC ObjectC
  • 使用 Python 变量搜索 SQLite 数据库

    我有一个 SQLite 数据库 我想使用 Python 变量进行搜索 如下所示 cur execute SELECT FROM list WHERE InstitutionName Variable 理想情况下 这将允许我将每一行作为列表返
  • 列表框 Shift-Click 多选锚点设置不正确

    我无计可施地试图解决这个问题 我在 WPF 方面经验丰富 但从未见过这样的事情 我有一个包含可选 ListBoxItems 的列表框 可以通过单击鼠标或使用向上 向下箭头来选择列表中的项目 我正在使用 SelectionMode Exten
  • Spring 应用程序中非 Spring Bean 的加载时间编织

    我有一个带有一些 REST 控制器 服务类和帮助程序类的 Spring Boot 应用程序 控制器和服务类是 spring 管理的 而辅助类不是 spring 管理的 并且大多包含静态方法 AspectJ 配置存在于 java 配置中 如下