我正在尝试创建一个包含两个模块,核心和Web的多模块项目。它们都是我在Spring Initialzer上生成的Spring Boot项目。我设置了Maven POM文件,但是我在部署它时遇到了问题。但是我很困惑配置如何工作。
核心模块将包含域对象/实体,Spring Data JPA存储库,服务,并将打包为JAR。 Web模块将具有Spring Security,控制器和视图。它将打包为WAR。
Spring Boot项目的正常结构如下所示
/
pom.xml
src/
..main/
....com/
......example/
........app/
..........Application.java
..resources/
....application.properites
我基本上有两个和两个Spring Boot应用程序/配置/初始化类。
我的问题是
属性是否必须存在于单个配置文件中,或者我可以有两个application.properities,一个是核心jar,另一个是WAR吗?
我可以在core.jar
中拥有以下内容吗?import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TimesheetCoreApplication {
public static void main(String[] args) {
SpringApplication.run(TimesheetCoreApplication.class, args);
}
}
以及我的web.war中的以下两个
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TimesheetWebApplication {
public static void main(String[] args) {
SpringApplication.run(TimesheetWebApplication.class, args);
}
}
和
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(TimesheetWebApplication.class);
}
}
最好的方法是什么?如果可能的话,我想利用Spring Boot。
答案 0 :(得分:2)
如果您的核心项目将拥有域实体,存储库等,那么您的设计稍有不正确,它不一定是BOOT应用程序。 正如你所说,这将是一个Jar。
现在,您将Web应用程序设置为依赖于核心模块jar的引导应用程序。您可以在引导应用程序中定义.properties或.yml,这样你就可以了。
Spring Initializer的问题是,它给你的印象是所有代码都需要驻留在一个项目或模块下。
这是我为我的应用程序遵循的典型项目
现在将核心和系统模块与服务模块绑定为依赖。
答案 1 :(得分:1)
请查找问题的答案
1。属性是否必须存在于单个配置文件中,或者我可以有两个application.properities,一个是核心jar,另一个是WAR吗?
它们不能都被命名为application.properties
。请参阅此问题的答案here。
2。我可以在core.jar中找到以下内容
是的,如果您按照链接中提到的步骤操作,则可以。
3。由于Spring Boot进行了大量的自动配置,他们是否会使用配置相互冲突,相互冲突或重叠?
您一次只能启动一个应用程序。假如您正在运行TimesheetWebApplication
应用程序,则TimesheetCoreApplication
将无法启动。时间TimesheetCoreApplication
仅作为普通JAR包含在内。
此外,您还可以执行以下操作
按如下方式打包TimesheetCoreApplication
。请参阅here。这将确保每次你进行maven安装时,将只包含类文件(没有tomcat嵌入式库)的jar将被安装到repo。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
答案 2 :(得分:0)
简言之,
您不需要.properties,您可以使用yaml进行Spring启动,它更具可读性。单个yaml文件足以配置您的配置,因为yaml使用缩进,这样你就可以轻松区分参数了。
单个应用程序类很好,因为您不会只执行核心模块。
有很多starter个依赖项及其configurations,您可以在项目中加快速度。