java - Spring Boot中Kotlin控制器类可以访问Java服务类吗
问题描述
我在 Spring Boot 项目中工作.. 是否可以在spring-boot项目中的 kotlin 和 java 中使用。我尝试过创建一个 Kotlin @controller 类并调用 java @service 类,但它不起作用
解决方案
为了在我现有的 Spring Boot 应用程序中成功使用 Kotlin,我已经完成了以下操作。我的 IDE 是 IntelliJ。
(1)
确保在 IDE 中安装了 Kotlin 插件。
- 选择工具 -> Kotlin -> 配置 Kotlin 插件更新。
- 在更新频道列表中,选择稳定频道。
- 再次单击检查。出现最新的稳定版本。
- 单击安装。应用/确定。
(2)
获取所需的依赖项。
- 打开 Spring Initializr ( https://start.spring.io/ )。
- 选择语言为 Kotlin。
- 其他事情照常进行。在这里,我们正在为 Maven 项目做这件事。
- 点击探索。将出现示例 pom.xml。
- 现在将示例 pom.xml 中的以下内容复制到现有 Spring Boot 项目的 pom.xml 中。
…
<properties>
…
<kotlin.version>1.6.10</kotlin.version>
<!--Edit the version to the latest stable version, if applicable-->
</properties>
…
<dependencies>
…
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
</dependency>
</dependencies>
…
<build>
<sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
…
</build>
…
<plugins>
…
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<configuration>
<args>
<arg>-Xjsr305=strict</arg>
</args>
<compilerPlugins>
<plugin>spring</plugin>
</compilerPlugins>
</configuration>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-allopen</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
(3)
在您的项目中创建所需的目录。
- 在你的项目的 src/main 目录下,新建一个目录,命名为 kotlin(这个目录应该和 src/main/java 同级)
- 现在右键单击此目录 -> 将目录标记为 -> Sources Root
- 另外,在你项目的 src/test 目录下,新建一个目录,命名为 kotlin(这个目录应该和 src/test/java 同级)
- 现在右键单击此目录 -> 将目录标记为 -> 测试源根目录
(4)
现在更新/重建项目。如果出现任何 Maven / 构建错误,请执行以下一项/所有操作:
- 右键 pom.xml -> Maven -> 下载源代码和文档
- 右键 pom.xml -> Maven -> 生成源和更新文件夹
- 右键 pom.xml -> Maven -> 重新加载项目
(5)
现在您可以在 src/main/kotlin 包下创建一个 Kotlin 类。为了这,
- 右键单击包 -> 新建 -> Kotlin 类/文件
- 给班级起个名字,然后双击班级
笔记:
如果新创建的 Kotlin 类没有 package 语句,那么它在 Java 类中将不可见。
为了解决这个问题,
转到具有 main 方法的 Java 类。(这是@SpringBootApplication注解的类)
复制这个类的包语句。这很可能是 Java 类的第一条语句,应该类似于
package com.xyz.myApplication;
将此语句粘贴到 Kotlin 类中,使其也成为 Kotlin 类的第一条语句。
一切都完成后,您可以简单地从 Java 类中导入和实例化 Kotlin 类。您也可以反之亦然,即从 Kotlin 类中导入和实例化您的 Java 类。
推荐阅读
- python - 遗传算法学习最适合指数函数
- java - 在 DataInputStream 中检测 STX 和 ETX
- python - 张量流数据集管道中每个时期的随机变换参数
- javascript - 如何通过 Div ID 更改 Div 样式
- bash - pdfgrep:搜索中间有空格的序列(在mac上)
- php - TCPDF 图像水平位置不起作用
- magento - Magento 错误阻止我刷新缓存以修复错误
- php - 删除不需要的 Woocommerce 图像元
- angularjs-ng-repeat - 使用 TamperMonkey 反转 ng-repeat 输出中的顺序
- python - Django ManyToManyField 不保存 m2m 关系