Spring Boot – 依赖管理
Spring-Boot 框架是最流行的 Web 开发框架。毫无疑问,它提供了丰富的基本功能和处理这些功能的便捷方式。 Spring-Boot 的核心是“依赖管理”功能。
Note: Dependency Management is just a way of managing all the required dependencies in one place and efficiently making use of them.
依赖管理的重要性
- 它允许根据各自的 Spring-Boot 版本在一个地方指定所有必需的依赖项。
- 您可以指定或更改 Spring-Boot 版本。在更改 Spring-Boot 版本时,所有提及(添加)依赖项的版本都将自动更新。
- 您可以防止不同 Spring-Boot 库版本的冲突,这有利于“多模块”项目。
Spring-Boot中依赖管理的工作
- 依赖关系只不过是一个“库”,它提供了我们可以在应用程序中使用的特定功能。
- 在 Spring-Boot 中,依赖管理和自动配置同时工作。
- 正是自动配置使管理依赖关系对我们来说非常容易。
- 我们必须在 pom.xml/build.gradle 文件中添加依赖项。
- 这些添加的依赖项将从 Maven Central 下载。
- 下载的依赖项将存储到本地文件系统的“.m2”文件夹中。
- Spring-Boot 应用程序可以从“.m2”及其子目录访问这些依赖项。
- 示例 -( .m2 ->存储库-> org等)
项目构建系统
- 您应该使用两个最常用的构建 Maven 和 Gradle。
- Maven 和 Gradle 使用不同的语法来管理依赖项。
- 此外,您无需提及依赖项的版本,因为 Spring-Boot 会自动配置它们。尽管您也可以提及版本或覆盖。
- 发布的精选列表包含您可以与 Spring-Boot 一起使用的所有 Spring 模块和第三方库。
- Maven 在 'pom.xml' 文件中管理它们,而 Gradle 在 'build.gradle' 文件中管理它们。
Maven构建的特点
- 它使用默认的Java编译器。
- 它具有 UTF-8 源编码
- 不提及依赖项的版本信息的一个有用功能是从 POM ( spring-boot-dependencies )继承的。
- 资源过滤和插件配置。
- 资源过滤也适用于“application.properties”和“application.yml”。
弹簧启动器
使用依赖管理,Spring-Boot Starters 在这里扮演着重要的角色。它们是一组方便的依赖描述符,应该在您的应用程序中提及。您可以访问项目所需的所有 Spring 和相关技术堆栈。启动器具有类似的命名模式 - ( spring-boot-starter-* )。第三方启动器不以“spring-boot”开头。启动模式中的星号代替要使用的任何技术名称。
Example: 'spring-boot-starter-jdbc'
启动器类型:
- 应用程序启动器。
- 技术入门。
- 生产就绪的启动器。
Spring-Boot 所需的所有依赖项都嵌入在“依赖项”标签/块中。
Maven -> pom.xml
...
...
...
马文
添加依赖项
在 STS(Spring Tool Suite)中创建新的 Spring-Boot 项目时,您可以在设置项目时添加所需的依赖项。
- 文件
- 新建 -> Spring Starter 项目
- 下一个
- 搜索所需的依赖项并添加它们
- 下一个
- 结束
要为当前工作项目添加依赖项:
- 右键单击项目
- 选择 Spring -> 添加 Starters
- 搜索所需的依赖项并添加它们
- 下一个
- 选择 pom.xml/HELP.md 或两者
- 结束
如果你知道依赖关系,你可以直接将它们放在 pom.xml 文件中。例如,要在项目构建中添加 Thymeleaf 模板引擎,可以在“
org.springframework.boot
spring-boot-starter-thymeleaf
示例:pom.xml
XML
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.6.3
sia
GFG
0.0.1-SNAPSHOT
GFG
GFG
11
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-devtools
runtime
true
org.springframework.boot
spring-boot-maven-plugin
org.projectlombok
lombok
了解/配置依赖关系
A - 入门父母
要利用自动配置的“合理”默认值,您应该在构建的项目中添加 Starter Parent。
org.springframework.boot
spring-boot-starter-parent
___
使用上面的默认配置,您可以通过覆盖“属性”来覆盖各自的依赖项。
___
This will make sure that the mentioned version of a SLF4j library will be used.
您还可以管理自动配置的“Starter Parent”并创建自定义 POM,而无需借助“spring-boot-dependencies”的工件“scope=import”指定第一个。
org.springframework.boot
spring-boot-dependencies
___
pom
import
在此之后,您通常可以像上面提到的那样添加依赖项。但是,要覆盖单个依赖项,您需要在“spring-boot-dependencies”条目之前添加一个相应的条目。
org.slf4j
slf4j-api
___
org.springframework.boot
spring-boot-dependencies
___
pom
import
但是,您必须通过显式添加“spring-boot-maven-plugin”来手动配置插件管理。管理 Maven 插件非常重要,因为它将 Spring-Boot 应用程序打包到一个可执行的 jar 中。
Maven -> pom.xml
org.springframework.boot
spring-boot-maven-plugin
B – Java版本
您还可以通过以下方式更改Java版本 -
___
C – 开发者工具
一组使应用程序开发过程更容易的特定工具。它位于“spring-boot-devtools”模块中。
Maven -> pom.xml
org.springframework.boot
spring-boot-devtools
true
摇篮
对于 Maven 中的“Starter Parent”,这里没有“Super Parent”可以利用一些自动配置。要在 Gradle 中添加依赖项,请将它们添加到“dependencies{}”部分。为了提供可执行 jar,您可以在依赖项部分添加以下内容 -
'spring-boot-gradle-plugin'
示例 – build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.8.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'spring-boot'
repositories {
jcenter()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
要添加“开发人员工具”,请在“依赖项”块中添加以下内容
Gradle -> build.gradle
developmentOnly("org.springframework.boot:spring-boot-devtools")
Note: Each release of Spring Boot is associated with a base version of the Spring Framework, so it is highly recommended to not specify its version on your own.