在独立 Java 应用程序中访问 Spring Boot 应用程序 JAR

问题描述

我有一个带有 REST 控制器类的 Spring Boot 应用程序,它有两个 REST 端点

我想将其打包到 JAR 中,并在独立 java 类中作为正常方法调用访问 REST 端点方法

我已经在我的项目构建池中添加了 JAR,如下所示:

enter image description here

尽管在类路径中添加了 JAR,但我无法在我的独立项目中为 Rest Controller 类创建对象

例如:我有一个名为 TestController 的类和一个名为 testMethod() 的方法,该方法映射到 (/test) 路径。

我想为控制器类和访问方法创建对象,而不是将其作为 HTTP 端点调用,如下所示:

public static void main(String[] args) {

    TestController test = new TestController();
    test.testMethod();
}

先谢谢你!

解决方法

您可以配置 spring-boot-maven-plugin 以构建两个工件:一个作为普通的“库”jar,仅包含您项目的类,另一个作为胖的可执行 jar。见spring-boot-maven-plugin documentation

使用默认的 spring-boot-project,以 spring-boot-starter-parent 作为父级,下面的配置将生成一个普通的 <artifactId>-<version>.jar 和一个胖的 <artifactId>-<version>-exec.jar

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>repackage</id>
            <configuration>
                <classifier>exec</classifier>
            </configuration>
        </execution>
    </executions>
</plugin>

如果没有 spring-boot-starter-parent,它需要稍微不同的配置 - 请参阅参考文档。