【发布时间】:2017-06-01 02:55:54
【问题描述】:
我很难确定是否需要使用 org.springframework.boot 依赖项,还是使用 org.springframework 依赖项和 非spring 依赖项 而不是在非 Spring Boot 应用程序模块中,例如共享库。
目前我有 3 个项目:
parent/
|-- client
| |-- pom.xml
| |-- src
|-- domain
| |-- pom.xml
| |-- src
|-- server
| |-- pom.xml
| |-- src
|-- pom.xml
我的 服务器 是一个 Spring Boot 应用程序,我用它来提供网页服务,并用作 RESTless API(通过使用两个不同的 HttpSecurity 配置)。
我的 client 是一个 Spring Boot CommandLineRunner 应用程序,它使用 服务器的 API 服务。
我创建了 Domain 模块,以便 client 和 server 都可以访问相同版本的 JPA Entities。 p>
我不知道什么时候使用 org.springframework.boot 依赖,什么时候使用 org.springframework 和 non-spring 依赖关系。
例如,在我的域模块中。我需要一些通常通过“org.springframework.boot::spring-boot-starter-jpa”和“org.springframework.boot::spring-boot-starter-security”获得的依赖项。但由于域模块不是 Spring Boot 应用程序。我应该使用非spring-boot:“org.spring.framework.security::spring-security-core”依赖和非spring依赖“javax.persistence::persistence-api”吗?
最佳做法是什么?什么时候使用springframework.boot依赖,什么时候使用springframework和非spring依赖?尽可能靠近春天。
【问题讨论】:
-
启动器只不过是带有使用该功能所需的 jar 集合的 poms(它们与 Spring Boot 没有任何关系)。它们使您更容易获得依赖项。您始终可以使用单个依赖项,但您需要自己查找匹配的库(和版本)。使用您不需要的启动器。
-
@M.Deinum 一个例子,使用 spring-boot-starter-web,一个 tomcat 网络服务器启动。恐怕通过使用 spring-boot 中的其他 starter pom 我会得到类似的不需要的功能和自动配置。
-
什么都不会启动如果你不使用一个主类包含
@SpringBootAPplication或SpringBootServletInitializer的类...所以不会启动它只会引入依赖项。 -
抱歉,忘了说这个 spring-boot-starter-web 的例子是针对客户端模块的,它使用了 spring web 库中的一些类,例如 RestTemplate。这是一个使用网络库但不想启动服务器的命令行应用程序。这可以通过使用 spring-web 或使用 spring-boot-starter-web 并排除 tomcat 服务器来实现。但这就是我的问题的重点。考虑到版本冲突和副作用,哪种方法更好?
标签: spring maven spring-boot dependency-management maven-dependency