@Aspect 方面的 Spring 自动装配 bean 为 null

2024-04-30

我有以下弹簧配置:

<context:component-scan base-package="uk.co.mysite.googlecontactsync.aop"/>

<bean name="simpleEmailSender" class="uk.co.mysite.util.email.simple.SimpleEmailSenderImplementation"/>

<aop:aspectj-autoproxy/>

然后我有一个方面:

@Aspect
public class SyncLoggingAspect {
    @Autowired
    private SimpleEmailSender simpleEmailSender

    @AfterReturning(value="execution(* uk.co.mysite.datasync.polling.Poller+.doPoll())", returning="pusher")
    public void afterPoll(Pusher pusher) {      
        simpleEmailSender.send(new PusherEmail(pusher));
    }
}

这方面有效(我可以在 afterPoll 上命中断点),但 simpleEmailSender 为空。不幸的是,我找不到关于原因的明确文档。 (根据记录,我的 simpleEmailSender bean 存在并且正确连接到其他类)以下事情让我感到困惑:

  1. context:component-scan 应该拾取 @Aspect 吗?如果是的话,那么它肯定是一个 spring 管理的 bean,因此自动装配应该可以工作?
  2. 如果 context:component-scan 不是用于创建方面,那么我的方面是如何创建的?我认为 aop:aspectj-autoproxy 只是创建一个 beanPostProcessor 来代理我的 @Aspect 类?如果它不是 Spring 管理的 bean,它会如何做到这一点?

显然你可以看出我不明白事情应该如何从头开始运作。


该方面是一个单例对象,并且是在 Spring 容器外部创建的。使用 XML 配置的解决方案是使用 Spring 的工厂方法来检索切面。

<bean id="syncLoggingAspect" class="uk.co.demo.SyncLoggingAspect" 
     factory-method="aspectOf" />

使用此配置,方面将被视为任何其他 Spring bean,并且自动装配将正常工作。

您还必须对 Enum 对象和其他没有构造函数的对象或在 Spring 容器外部创建的对象使用工厂方法。

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

@Aspect 方面的 Spring 自动装配 bean 为 null 的相关文章

  • 通过SOCKS代理连接Kafka

    我有一个在 AWS 上运行的 Kafka 集群 我想用标准连接到集群卡夫卡控制台消费者从我的应用程序服务器 应用程序服务器可以通过 SOCKS 代理访问互联网 无需身份验证 如何告诉 Kafka 客户端通过代理进行连接 我尝试了很多事情 包
  • 使用 Ant 将非代码资源添加到 jar 文件

    我正在将 java 应用程序打包成 jar 文件 我正在使用 ant 和 eclipse 我实际上需要在 jar 中直接在根文件夹下包含几个单独的非代码文件 xml 和 txt 文件 而不是与代码位于同一位置 我正在尝试使用includes
  • 如何在 Antlr4 中为零参数函数编写语法

    我的函数具有参数语法 如下面的词法分析器和解析器 MyFunctionsLexer g4 lexer grammar MyFunctionsLexer FUNCTION FUNCTION NAME A Za z0 9 DOT COMMA L
  • org.hibernate.QueryException:无法解析属性:文件名

    我正在使用休眠Criteria从列中获取值filename在我的桌子上contaque recording log 但是当我得到结果时 它抛出异常 org hibernate QueryException 无法解析属性 文件名 com co
  • Kotlin 未解决的参考:CLI 上 gradle 的 println

    放一个printlnkotlin 函数返回之前的语句会崩溃 堆栈跟踪 thufir dur NetBeansProjects kotlin thufir dur NetBeansProjects kotlin gradle clean bu
  • 什么时候可以在 Java 中使用 Thead.stop() ?

    Thread stop 的 Java 文档听起来好像如果您调用 Thread stop 世界就会终结 已弃用 这种方法本质上是不安全的 停止线程 Thread stop 导致它解锁所有已锁定的监视器 作为未经检查的 ThreadDeath
  • Jackson XML ArrayList 输出具有两个包装器元素

    我在 Jackson 生成的 XML 输出中得到了两个包装器元素 我只想拥有一个 我有一个 Java bean Entity Table name CITIES JacksonXmlRootElement localName City pu
  • 是否可以通过编程方式查找 logback 日志文件?

    自动附加日志文件以支持电子邮件会很有用 我可以以编程方式设置路径 如以编程方式设置 Logback Appender 路径 https stackoverflow com questions 3803184 setting logback
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • 使用 Guice 优化注册表

    你好 今天思考了一种优化 有一些疑问 语境 我正在使用 Guice 2 进行 Java 开发 在我的网络应用程序中 我有一个转换器注册表 可以即时转换为某种类型 转换器描述如下 public class StringToBoolean im
  • Java Swing For mac 中的 DJ Native Swing 浏览器

    我有一个用 Swing 制作的 Java 应用程序 并且使用了一个 DJ Native Swing 浏览器 当我尝试在 OS X 上使用它时 它抛出了一个NoClassDefFoundError尽管我添加了 swt jar 但始终如此 有人
  • 读取电子邮件的文本文件转换为 Javamail MimeMessage

    我有一个电子邮件原始来源的文本文件 直接从 gmail 复制 如果您单击 查看原始文件 您就会看到它 我想读入该文件并将其转换为 MimeMessage 如果您好奇为什么 我设置了 JavaMaildir 并且需要用电子邮件填充它的收件箱以
  • Java实现累加器类,提供Collector

    A Collector具有三种通用类型 public interface Collector
  • 在 SWT/JFace RCP 应用程序中填充巨大的表

    您将如何在 SWT 表中显示大量行 巨大是指超过 20K 行 20 列的东西 不要问我为什么需要展示那么多数据 这不是重点 关键是如何让它尽可能快地工作 这样最终用户就不会厌倦等待 每行显示某个对象的实例 列是其属性 一些 我想使用 JFa
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • 使用布尔值进行冒泡排序以确定数组是否已排序

    我有以下用于冒泡排序的代码 但它根本不排序 如果我删除布尔值那么它工作正常 我知道 由于我的 a 0 小于所有其他元素 因此没有执行交换 任何人都可以帮助我解决这个问题 package com sample public class Bub
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • 如何使用play框架上传多个文件?

    我在用play framework 2 1 2 使用java我正在创建视图来上传多个文件 我的代码在这里 form action routes upload up enctype gt multipart form data
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复
  • Java EE 目录结构

    我对以下教程有疑问 http www mkyong com jsf2 jsf 2 internationalization example http www mkyong com jsf2 jsf 2 internationalizatio

随机推荐

  • 使用线程反转字符串

    最近 在一次面试中 我被要求使用线程实现一个字符串反转功能 我想出了下面解决方案的大部分内容 被选中与否是另一回事 我尝试在运行 Windows 8 Consumer Preview 的家用电脑上运行以下解决方案 编译器是VC11 Beta
  • 智能指针的三法则?

    我对将 三法则 与智能指针一起使用感到有点困惑 如果我有一个类 其唯一的数据成员是智能指针 我是否需要显式定义析构函数 复制构造函数和赋值运算符 我的理解是 由于智能指针将自动处理资源 所以我不需要显式定义析构函数 因此我不需要根据三规则为
  • 使用 .NET Core 操作图像

    我已将我的项目从 NET 4 5 更新到 NET Core 使用 ASP NET Core 我在以前的版本中有一些非常简单的代码 使用了位图对象System Drawing调整图像大小 我认为System Drawing不能在 NET Co
  • 你现在在做MDA(模型驱动架构)吗?如果是这样,您使用什么工具,效果如何?

    模型驱动架构是这样一种想法 您创建模型 以一种不依赖任何 或至少大多数 实现技术的方式表达您需要解决的问题 然后为一个或多个特定平台生成实现 人们声称 在更高的抽象级别上工作更加强大和高效 此外 您的模型比技术更长寿 因此 当您的第一语言
  • 将 Grails 应用程序移植到 GAE

    我目前正在评估一个 Grails 应用程序是否移植到 Google App Engine 我想了解以下方面的经验 Acegi 安全性 应用程序依赖此库来增强安全性 更新 刚刚了解到它基于 hibernate 因此无法移植 有推荐的替代品吗
  • 通话过程中是否可以拦截语音数据?

    我计划开发 Android 应用程序 对语音数据进行加密 解密 以便各方可以使用安全通道进行通信 那么问题来了 GSM通话时如何拦截语音 音频数据 可能还是不可能 我应该使用 Android NDK 还是其他东西 在 GSM 中 由于信道特
  • 是否可以在执行时查看对对象的所有引用?

    有没有办法查看执行时对某个对象的所有引用 我正在使用 Netbeans 其中是否存在此功能 编辑 使用探查器来执行此操作没有问题 我只需要知道引用 无论如何 好的 Netbeans 显示了对一个对象的所有引用 首先 以调试模式运行项目CTR
  • 如何从js获取zk元素id

    我正在使用 ZK 我想从 js 获取 zk 元素的 id 我使用了不同的方式 像原生 html 一样声明组件 它从 js 获取 id 但它不正确 我已经使用 ZK 的 html 标签声明了该元素 但也不正确 我已经看到了一些像 Compon
  • 可以跳过“不返回”吗?

    我想知道跳过是否是一种不好的方式return None 当不需要时 Example def foo1 x if some condition return Baz x else return None def foo2 x if some
  • 适用于 Visual Studio 2013 的水晶报表 8

    有什么办法可以在 Visual Studio 2013 上运行 Crystal Reports 8 我有一个使用 VS2008 Crystal Reports 8 构建的 Vb Net 项目 现在我正在运行 Visual Studio 20
  • 使用 AFNetworking 发送多张图像

    我正在开发一款消息应用程序 用户还可以互相发送图片 当用户发送多张图片时 我会并行发送它们 在发送第二张图片之前 我不会等待第一张图片完成上传 搬到之前AFNetworking我成功地做到了这一点ASIFormDataRequest 事实上
  • 如何在 Angular 2 中添加表单验证模式?

    我有一个简单的表单 需要验证输入的开头和结尾是否不是空格 在 HTML5 中 我将这样做
  • 如何根据最短距离为经纬度观测值指定名称

    我有两个数据框 df1包含带有经纬度坐标的观测值 df2具有带有纬度坐标的名称 我想创建一个新变量df1 name每个观察值的名称df2到该观测值的距离最短 一些示例数据df1 df1 lt structure list lat c 52
  • 解析对象或对象数组的 JSON 键

    在 Moshi 中 是否可以创建一个类型适配器来解析同一类型的对象或对象列表 例如 有时 JSON 是 person 其他时候是 person 理想情况下 我希望有一个如下所示的 Java 对象 class PersonContainer
  • PyFile_Type 替换为 ..?

    我正在尝试编译Yenc https bitbucket org dual75 yenc对于Python 3 2 我注意到 gcc 抱怨未声明的函数PyString Type 所以我用它的替代品替换了它PyBytes Type正如根据文档 h
  • 如何使用 Visual Studio + ReSharper 禁用不需要的自动完成?

    我正在使用 Visual Studio 2010 和 ReSharper 5 我在 cs 文件的顶部定义了它 if X86 using size t System Int32 else using size t System Int64 e
  • 如何使用 java 开始编码和设置 Web 服务器?

    所以现在我想我已经学习了java的所有基础知识和术语 但我不知道如何使用 Java 中的 Netbeans 编码和显示网页 大多数教程包含大量关于不同技术的讨论 Java 使用 Java Beans JSP 和 servlet 等 我在哪里
  • Laravel 中的魔法方法

    所以我最近意识到 而不是使用 users User all return view home gt with users users 你有能力做到 return view home gt withUsers users 我相信这些被称为 神
  • 在 iOS 13 中推送 UIViewController 会导致其与状态栏重叠

    请注意 该项目是在 Xcode 10 中创建的 我最近升级到 Xcode 11 发生了这种情况 我有一个 UINavigationController 来推动视图控制器 初始视图控制器看起来不错 但是当我通过推动另一个视图控制器来连接它时
  • @Aspect 方面的 Spring 自动装配 bean 为 null

    我有以下弹簧配置