@Service 中带有 Kotlin 的 Spring Boot @Autowired 始终为 null

2024-05-07

目前,我尝试使用 Kotlin 重写我的 Java Spring Boot 应用程序。我遇到了一个问题,在我所有的类中都用@Service依赖注入无法正常工作(所有实例都null)。这是一个例子:

@Service
@Transactional
open class UserServiceController @Autowired constructor(val dsl: DSLContext, val teamService: TeamService) {
  //dsl and teamService are null in all methods
}

在 Java 中执行相同的操作不会出现任何问题:

@Service
@Transactional
public class UserServiceController
{
    private DSLContext dsl;
    private TeamService teamService;

    @Autowired
    public UserServiceController(DSLContext dsl,
                             TeamService teamService)
    {
        this.dsl = dsl;
        this.teamService = teamService;
    }

如果我用注释该组件@Component在 Kotlin 中一切正常:

@Component
open class UserServiceController @Autowired constructor(val dsl: DSLContext, val teamService: TeamService) {
  //dsl and teamService are injected properly
}

Google 为 Kotlin 提供了许多不同的方法@Autowired我尝试过,但结果都一样NullPointerException我想知道 Kotlin 和 Java 之间有什么区别以及如何解决这个问题?


我刚刚遇到了完全相同的问题 - 注入效果很好,但添加 @Transactional 注释后,所有自动装配字段都为空。

My code:

@Service
@Transactional  
open class MyDAO(val jdbcTemplate: JdbcTemplate) {

   fun update(sql: String): Int {
       return jdbcTemplate.update(sql)
   }

} 

这里的问题是,Kotlin 中的方法默认是 Final 的,因此 Spring 无法为该类创建代理:

 o.s.aop.framework.CglibAopProxy: Unable to proxy method [public final int org.mycompany.MyDAO.update(...

“打开”方法修复了问题:

固定代码:

@Service
@Transactional  
open class MyDAO(val jdbcTemplate: JdbcTemplate) {

   open fun update(sql: String): Int {
       return jdbcTemplate.update(sql)
   }

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

@Service 中带有 Kotlin 的 Spring Boot @Autowired 始终为 null 的相关文章

  • 在Spring中使用什么样的“EventBus”?内置、Reactor、Akka?

    我们将在几周后启动一个新的 Spring 4 应用程序 我们希望使用一些事件驱动的架构 今年 我到处读到有关 Reactor 的内容 在网上查找时 我偶然发现了 Akka 所以现在我们有3个选择 春天的ApplicationEvent ht
  • OSGi:如果不取消服务会发生什么

    这是我获取 OSGi 服务的方式 ServiceReference reference bundleContext getServiceReference Foo class getName Foo foo Foo bundleContex
  • java中如何连接字符串

    这是我的字符串连接代码 StringSecret java public class StringSecret public static void main String args String s new String abc s co
  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • 如何在不超过最大值的情况下增加变量?

    我正在为学校开发一个简单的视频游戏程序 我创建了一个方法 如果调用该方法 玩家将获得 15 点生命值 我必须将生命值保持在最大值 100 并且由于我目前的编程能力有限 我正在做这样的事情 public void getHealed if h
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • 使用 SQLITE 按最近的纬度和经度坐标排序

    我必须获得一个 SQLite SQL 语句 以便在给定初始位置的情况下按最近的纬度和经度坐标进行排序 这是我在 sqlite 数据库中的表的例句 SELECT id name lat lng FROM items EXAMPLE RESUL
  • 使用过滤器@ComponentScan所有包的危险

    我现在正在开发一个概念应用程序 我想使用组件扫描来使用特定的自定义 Spring 元注释来获取类路径上任何位置的所有类 我的注释如下所示 Target value ElementType TYPE Retention value Reten
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • Vaadin 12 将对象传递给 JavaScript 函数:无法对类进行编码

    Vaadin 12 Kotlin 项目 In my myPage html我有JavaScript myObject redirectToCheckout sessionId 1111 2222 所以我需要调用javaScript函数red
  • 如何在 Kotlin 中验证输入字符串是否为有效日期?

    So my Kotlin应用程序正在接受一个输入字符串 该字符串应该是某种格式的日期 fun haveFun dateStr String var formatter DateTimeFormatter ofPattern dd MMM y
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • 将 Azure AD 高级自定义角色与 Spring Security 结合使用以进行基于角色的访问

    我创建了一个演示 Spring Boot 应用程序 我想在其中使用 AD 身份验证和授权 并使用 AD 和 Spring Security 查看 Azure 文档 我执行了以下操作 package com myapp contactdb c
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 如何从 Maven 存储库引用本机 DLL?

    如果 JAR 附带 Maven 存储库中的本机 DLL 我需要在 pom xml 中放入什么才能将该 DLL 放入打包中 更具体地举个例子Jacob http search maven org artifactdetails 7Cnet s
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话

随机推荐

  • 如何访问 Google Cloud Platform Compute Engine VM 实例的 SSH 密钥?

    我通过 Google Cloud Web 控制台从 CentOS 6 x 映像创建了一个新实例 我在创建表单上看到一个空白 我可以在其中粘贴现有的 SSH 密钥 因为这是我的第一个实例 所以我还没有 我以为它会像 Amazon EC2 一样
  • 即使用户正在积极使用应用程序,Azure AD Easy Auth 也会过期

    我们有一个使用 Azure Active Directory 轻松身份验证 的单页应用程序 SPA 例如无代码解决方案 当用户第一次打开应用程序时 这似乎工作正常 他们将被重定向到 Microsoft 登录页面 他们可以进行身份 验证 然后
  • Angular 2 - 检查图像 URL 是否有效或损坏

    我正在从 API 获取大量图像 URL 并将它们显示在 Angular 2 Web 应用程序中 有些 URL 已损坏 我想用本地存储在我的网络服务器上的默认图片替换它们 有人建议如何测试 url 并在状态代码 404 的情况下替换损坏的图像
  • 创建另一个进程的 HWND 的子窗口? (例如屏幕保护程序预览)

    我正在用 Java 编写一个屏幕保护程序 它主要适用于 Windows 但我更希望它尽可能便携且实用 根据http support microsoft com kb 182383 http support microsoft com kb
  • 如何将 OData 查询字符串转换为 .NET 表达式树

    完全重写这个问题 因为我现在比以前理解得更多 我试图将 OData 查询字符串直接抽象为 NET 表达式树 似乎有很多关于此的问题和文章 但没有答案提供依赖于的抽象解决方案soley on the Microsoft Data OData命
  • 当数据帧预排序时 pandas.groupby.nsmallest 会丢弃多索引

    我正在使用 pandas 0 22 0 python 版本 3 6 4 groupby与 nsmallest方法查找数据帧每组中的最小项目 这是一个示例数据框 gt gt gt import pandas as pd gt gt gt df
  • iPhone 4 移动网络应用程序像素缩放问题

    我无法让我的移动 Web 应用程序在 iPhone 4 上正确呈现 根据 Wikipedia iPhone 4 的像素为 960 宽 x 680 高度 而其他 iPhone 的像素为 480 宽 x 340 像素 在我当前的构建中 图像和
  • Word 插件 - 如何读取自定义文档属性

    我正在使用 Office JS API 开发 Word 插件 目前 我可以通过执行以下操作向 Word 文档添加自定义属性 context document properties load context document properti
  • 找不到“Attributes.inc”文件

    我一直在使用中提供的标题include llvm and include llvm c尝试制作我自己的编译器 但是 每当我尝试编译时 都会收到此错误 没有llvm IR Attributes inc在我的文件或我见过的任何 LLVM 项目中
  • 将 Django 模型映射到外部 API

    上下文 我有一个外部 API 提供数据并允许发布新数据或修补现有数据 API 响应示例 response requests get http api band 4 print response json id 4 name The Beat
  • 更改 NSIS 安装程序属性

    我有一个基于 NSIS 的安装程序文件 名为安装程序 当我进入 属性 gt 详细信息 时 缺少许多详细信息 当我运行安装程序时 UAC 请求提升权限 这是可以的 但发布者是 未知 我如何在最终设置这些属性安装程序 最好只更改 NSIS 安装
  • XAMPP无法安装xdebug

    你好 我已经安装了 xampp 将 php ini 更改为 XDebug zend extension C xampp php ext php xdebug 2 2 3 5 3 vc9 dll xdebug profiler append
  • 单选按钮文本对齐问题

    我正在 asp net 中工作 并且有单选按钮列表 我想根据需要对齐它们的文本 这是我目前拥有的 我想让它们像这样 EDIT 其次 当我单击 Ages From 单选按钮时 我会显示一个 div 如下所示 当我单击返回 All Ages 单
  • 有没有办法检测 Alt 键被按在哪一侧(右或左)?

    Is there a way that we can detect which side the Alt key was pressed on i e distinguish between left or right Alt I saw
  • GWT:将自定义小部件添加到单元格丢失自定义小部件的事件

    我们的要求是使用以下命令制作一个可编辑的网格CellTable在其单元格中包含自定义小部件 自定义小部件具有文本框和与文本框关联的搜索按钮 要将自定义小部件添加为单元格 请创建以下子类AbstractEditableCell类 由 GWT
  • 使用 Moq 模拟实体框架 6 ObjectResult

    如何使用 Moq 模拟 Entity Framework 6 ObjectResult 以便对依赖 EF 数据库连接的代码进行单元测试 沿着这些思路阅读了大量的问题和答案 并从我所读到的内容中收集了许多有价值的信息 我已经实现了我认为相当优
  • 在 tidycensus 中使用 purrr() 而不是 lapply 任意城市/县对?

    我有一个巨大的 lapply 正在运行来下载数据文件 但看起来很笨拙 但 mapply 似乎不对 因为我不想要所有州 县的组合 我听说过关于 map 的好消息 任何人都可以提供一个示例 说明如何在以下代码中使用 purrr 命令 map l
  • 是否可以使用 Drupal api 获取用户列表?

    我想获取已分配特定角色的所有用户的列表 我可以编写自己的 SQL 但我想尽可能多地使用 api 您可以使用entity load来获取用户数组 这是将为管理员用户创建所有电子邮件列表的示例 用于发送通知
  • Asp net Core 获取用户Windows用户名

    在ASP net CORE mvc中构建内联网 我需要获取当前用户的Windows用户名进行登录 我不需要使用Windows身份验证自动登录用户 我已经有一个自定义登录控制器来做到这一点 我只需要他的用户名 它在本地工作正常 但在 IIS
  • @Service 中带有 Kotlin 的 Spring Boot @Autowired 始终为 null

    目前 我尝试使用 Kotlin 重写我的 Java Spring Boot 应用程序 我遇到了一个问题 在我所有的类中都用 Service依赖注入无法正常工作 所有实例都null 这是一个例子 Service Transactional o