首页 > 解决方案 > Spring Boot中Kotlin控制器类可以访问Java服务类吗

问题描述

我在 Spring Boot 项目中工作.. 是否可以在spring-boot项目中的 kotlin 和 java 中使用。我尝试过创建一个 Kotlin @controller 类并调用 java @service 类,但它不起作用

标签: javaspring-bootkotlin

解决方案


为了在我现有的 Spring Boot 应用程序中成功使用 Kotlin,我已经完成了以下操作。我的 IDE 是 IntelliJ。

(1)

确保在 IDE 中安装了 Kotlin 插件。

  1. 选择工具 -> Kotlin -> 配置 Kotlin 插件更新。
  2. 在更新频道列表中,选择稳定频道。
  3. 再次单击检查。出现最新的稳定版本。
  4. 单击安装。应用/确定。

(2)

获取所需的依赖项。

  1. 打开 Spring Initializr ( https://start.spring.io/ )。
  2. 选择语言为 Kotlin。
  3. 其他事情照常进行。在这里,我们正在为 Maven 项目做这件事。
  4. 点击探索。将出现示例 pom.xml。
  5. 现在将示例 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)

在您的项目中创建所需的目录。

  1. 在你的项目的 src/main 目录下,新建一个目录,命名为 kotlin(这个目录应该和 src/main/java 同级)
  2. 现在右键单击此目录 -> 将目录标记为 -> Sources Root
  3. 另外,在你项目的 src/test 目录下,新建一个目录,命名为 kotlin(这个目录应该和 src/test/java 同级)
  4. 现在右键单击此目录 -> 将目录标记为 -> 测试源根目录

(4)

现在更新/重建项目。如果出现任何 Maven / 构建错误,请执行以下一项/所有操作:

  1. 右键 pom.xml -> Maven -> 下载源代码和文档
  2. 右键 pom.xml -> Maven -> 生成源和更新文件夹
  3. 右键 pom.xml -> Maven -> 重新加载项目

(5)

现在您可以在 src/main/kotlin 包下创建一个 Kotlin 类。为了这,

  1. 右键单击包 -> 新建 -> Kotlin 类/文件
  2. 给班级起个名字,然后双击班级

笔记:

如果新创建的 Kotlin 类没有 package 语句,那么它在 Java 类中将不可见。

为了解决这个问题,

  1. 转到具有 main 方法的 Java 类。(这是@SpringBootApplication注解的类)

  2. 复制这个类的包语句。这很可能是 Java 类的第一条语句,应该类似于

    package com.xyz.myApplication;
    
  3. 将此语句粘贴到 Kotlin 类中,使其也成为 Kotlin 类的第一条语句。

一切都完成后,您可以简单地从 Java 类中导入和实例化 Kotlin 类。您也可以反之亦然,即从 Kotlin 类中导入和实例化您的 Java 类。


推荐阅读