Spring 引导 war 或用于休息的 jar api 项目
Spring Boot war or jar for rest api project
我想使用 Spring Boot 开发示例 REST API 项目。我很困惑什么才是正确的方法,因为我们有多种包装选项,例如 war
、jar
等
我有一个要求,其中有多个 jar
的外部库文件夹和将在 REST API 和前端(使用 React)中使用的资源文件。
由于 jar 和资源的动态变化,我想将它们保留为外部依赖项,并且我不想将它们包含在项目中。我尝试过使用 loader.path
和 jar
的示例项目,效果很好,但同样的方法不适用于 war
文件。我正在使用 Maven 作为构建工具。
- 在 Spring 引导中应该采用什么方法来实现?
- 需要 2.xx 版本
中的工作示例
- 应该使用什么
war
或jar
?
- 如何配置 IDE (Eclipse / IntelliJ) 以使用外部
lib
文件夹和 Spring 引导 - 我找不到解决方案。
您应该将其设为可执行文件 Spring Boot JAR。
如果必须将其部署在 Java EE 服务器上,则只需要 WAR。
很高兴您使用 Maven。让它管理您的依赖项并构建包。
您想找到创建可执行 JAR 的 Maven 插件,其中包含依赖项。
更新:
以下是我对您的四个问题的回复:
- 不要混用 Maven 和 /lib。最好使用
mvn install
将您声称需要的所有外部库放在本地 .m2 或 Maven 存储库中。
- 有关工作示例,请参阅 Spring Boot guides。也许服务和 React 前端应该是单独的包和部署。
- 这是 Spring 引导,而不是 Java EE。使用可执行 JAR,而不是 WAR.
- 参见建议 1. 在 Maven 中安装这些 JAR。不要混搭。
建议大家考虑单独部署REST服务,让React前端调用。解耦两者。让 REST 服务成为一个独立的微服务,没有 UI.
您可以使用 Apache Maven Assembly Plugin.
创建具有依赖项的可执行 JAR 文件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<archive>
<manifest>
<mainClass>${mainClass}</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
将它添加到 pom.xml
中的 <build></build>
元素允许您构建 jar
和 jar-with-dependencies
包。
要构建包,请使用 mvn clean package
命令。
选择 jar 还是 war 取决于您是想要一个独立的可执行应用程序,还是想将您的项目部署在 Weblogic 等服务器上。假设我的应用程序是复杂项目的中间层或适配器(助手应用程序),我会将其部署在 WebLogic 上,形式为 war.
在您的情况下,我建议您使用 JAR 而不是 WAR。要构建 jar,请使用 mvn clean install 命令。
为了加载外部属性文件,您需要做的就是传递文件夹名称和 属性 名称作为命令行参数的一部分,如下所示:
java -jar myapp.jar --spring.config.name=application,myapp
-- spring.config.location=classpath:/data/myapp/config,classpath:/data/myapp/external/config
为了外部导入资源,可以使用
Resource banner = resourceLoader.getResource("file:c:/temp/filesystemdata.txt");
代码片段
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.springframework.context.ResourceLoaderAware;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
public class CustomResourceLoader implements ResourceLoaderAware
{
private ResourceLoader resourceLoader;
public void setResourceLoader(ResourceLoader resourceLoader) {
this.resourceLoader = resourceLoader;
}
public void showResourceData() throws IOException
{
//This line will be changed for all versions of other examples
Resource banner = resourceLoader.getResource("file:c:/temp/filesystemdata.txt");
InputStream in = banner.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
while (true) {
String line = reader.readLine();
if (line == null)
break;
System.out.println(line);
}
reader.close();
}
}
和applicationContext.xml此文件的文件条目如下:
<bean id="customResourceLoader" class="com.howtodoinjava.demo.CustomResourceLoader"></bean>
附录-
- 如果您需要一个独立的应用程序,请使用 jar。
- 如果您需要在服务器中部署,请选择 war。
我想使用 Spring Boot 开发示例 REST API 项目。我很困惑什么才是正确的方法,因为我们有多种包装选项,例如 war
、jar
等
我有一个要求,其中有多个 jar
的外部库文件夹和将在 REST API 和前端(使用 React)中使用的资源文件。
由于 jar 和资源的动态变化,我想将它们保留为外部依赖项,并且我不想将它们包含在项目中。我尝试过使用 loader.path
和 jar
的示例项目,效果很好,但同样的方法不适用于 war
文件。我正在使用 Maven 作为构建工具。
- 在 Spring 引导中应该采用什么方法来实现?
- 需要 2.xx 版本 中的工作示例
- 应该使用什么
war
或jar
? - 如何配置 IDE (Eclipse / IntelliJ) 以使用外部
lib
文件夹和 Spring 引导 - 我找不到解决方案。
您应该将其设为可执行文件 Spring Boot JAR。
如果必须将其部署在 Java EE 服务器上,则只需要 WAR。
很高兴您使用 Maven。让它管理您的依赖项并构建包。
您想找到创建可执行 JAR 的 Maven 插件,其中包含依赖项。
更新:
以下是我对您的四个问题的回复:
- 不要混用 Maven 和 /lib。最好使用
mvn install
将您声称需要的所有外部库放在本地 .m2 或 Maven 存储库中。 - 有关工作示例,请参阅 Spring Boot guides。也许服务和 React 前端应该是单独的包和部署。
- 这是 Spring 引导,而不是 Java EE。使用可执行 JAR,而不是 WAR.
- 参见建议 1. 在 Maven 中安装这些 JAR。不要混搭。
建议大家考虑单独部署REST服务,让React前端调用。解耦两者。让 REST 服务成为一个独立的微服务,没有 UI.
您可以使用 Apache Maven Assembly Plugin.
创建具有依赖项的可执行 JAR 文件<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<archive>
<manifest>
<mainClass>${mainClass}</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
将它添加到 pom.xml
中的 <build></build>
元素允许您构建 jar
和 jar-with-dependencies
包。
要构建包,请使用 mvn clean package
命令。
选择 jar 还是 war 取决于您是想要一个独立的可执行应用程序,还是想将您的项目部署在 Weblogic 等服务器上。假设我的应用程序是复杂项目的中间层或适配器(助手应用程序),我会将其部署在 WebLogic 上,形式为 war.
在您的情况下,我建议您使用 JAR 而不是 WAR。要构建 jar,请使用 mvn clean install 命令。
为了加载外部属性文件,您需要做的就是传递文件夹名称和 属性 名称作为命令行参数的一部分,如下所示:
java -jar myapp.jar --spring.config.name=application,myapp
-- spring.config.location=classpath:/data/myapp/config,classpath:/data/myapp/external/config
为了外部导入资源,可以使用
Resource banner = resourceLoader.getResource("file:c:/temp/filesystemdata.txt");
代码片段
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.springframework.context.ResourceLoaderAware;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
public class CustomResourceLoader implements ResourceLoaderAware
{
private ResourceLoader resourceLoader;
public void setResourceLoader(ResourceLoader resourceLoader) {
this.resourceLoader = resourceLoader;
}
public void showResourceData() throws IOException
{
//This line will be changed for all versions of other examples
Resource banner = resourceLoader.getResource("file:c:/temp/filesystemdata.txt");
InputStream in = banner.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
while (true) {
String line = reader.readLine();
if (line == null)
break;
System.out.println(line);
}
reader.close();
}
}
和applicationContext.xml此文件的文件条目如下:
<bean id="customResourceLoader" class="com.howtodoinjava.demo.CustomResourceLoader"></bean>
附录-
- 如果您需要一个独立的应用程序,请使用 jar。
- 如果您需要在服务器中部署,请选择 war。