Spring Boot 2.0 教程

  • Spring Boot 入门教程 一、Spring Boot 是什么 以下截图自 Spring Boot 官方文档: 翻译整理一下,内容如下: Spring Boot 是基于 Spring 框架基础上推出的一个全新的框架, 旨在让开发者可以轻松...
    • 1年前
  • Spring Boot Starter Parent 什么是 Spring Boot Starter Parent ? 通过 Spring Boot Starter Parent, 我们可以进行简单便捷地包依赖管理。在 Spring Boot 每...
    • 1年前
  • Spring Boot 热部署 相信小伙伴们在日常的开发中,调试代码时,免不了经常修改代码,这个时候,为了验证效果,必须要重启 Spring Boot 应用。 频繁地重启应用,导致开发效率降低,加班随之而来。有没有什么办法,能让 Spring B...
    • 1年前
  • 欢迎关注博主公众号「java大师」, 回复【dsblog】获取源码 一、效果图展示 一、网站前台 1、首页 2、内容页 3、最新文章页面 二、网站后台 1、登录页 2、首页 3、栏目管理 4、文章管理 三、后端(swa...
    • 1月前
  • springboot上传头像 @Controller @RequestMapping("/upload") public class UploadController { private Logger logger = LoggerFactory...
    • 2月前
  • springboot处理blog字段 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章https://www.javaman.cn/ 1、数据库表结构 其中content为longblob字段,代表存入的内容 CREA...
    • 3月前
  • 手撸一个springsecurity,了解一下security原理 今天手撸一个简易版本的springsecurity,带大家理解下springsecurity的原理: 安全框架的两个特点就是认证和授权,让我们来通过代码了解下认证和授权的处理方式...
    • 5月前
  • SpringBoot2.0之@Configuration注解 前面我们介绍了Spring boot2.0的启动和第一个helloworld实例,今天我们来讲解一下springboot2.0比较关键的注解@Configuration 在讲解@C...
    • 1年前
  • Spring Boot 配置 log4j2 欢迎关注博主公众号「java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 免费领取全网最热的Java架构师学习PDF, 转载请注明出处 https://www.exception.si...
    • 1年前
Spring Boot Starter Parent - idea激活- IntelliJ IDEA 2021.1激活码破解教程(亲测激活至 2099 年,长期更新)- 爪哇男教程  

Spring Boot Starter Parent

什么是 Spring Boot Starter Parent ?

通过 Spring Boot Starter Parent, 我们可以进行简单便捷地包依赖管理。在 Spring Boot 每一个发行版中,均提供了该版本所兼容的依赖项版本清单

所以,在开发 Spring Boot 应用时,pom.xml 文件中,我们可以不用指定具体的依赖版本号,因为 Spring Boot Starter Parent 默认会使用自身支持包版本号。

Spring Boot Starter Parent 开始

通过 Spring Initializr 或者使用 Idea 创建一个 Spring Boot 项目时,我们可以看到 pom.xml 文件中包含以下内容:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.2.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

一旦 pom.xml 文件中包含了上述配置,Spring Boot 应用将默认包含如下功能:

  • 1.依赖管理功能(Spring Boot 自动管理包版本依赖)

    相关默认值设置

    • 2.1 默认的 Java 版本号
    • 2.2 资源文件编码格式
    • 2.3 资源过滤等
  • 3.插件管理

1.1 了解 Starter Parent 内部

追踪到 spring-boot-starter-parent 内部文件,可以看到存在一个 spring-boot-dependencies的父级 pom

9.jpg

文件中定义了应用所有的依赖管理清单,还包括插件和其他相关配置,上面是 pom.xml 大致的样子:

<properties>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <resource.delimiter>@</resource.delimiter>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

属性部分定义了一些应用程序参数的默认值。如果我们没有自定义,则默认使用这些值。

<pluginManagement>
    <plugins>
	<plugin>
	  <groupId>org.jetbrains.kotlin</groupId>
	   <artifactId>kotlin-maven-plugin</artifactId>
	   <version>${kotlin.version}</version>
	      <executions>
		<execution>
		  <id>compile</id>
		  <phase>compile</phase>
		     <goals>
			<goal>compile</goal>
		      </goals>
		  </execution>
                  <!-- other execution goals -->
		  <configuration>
		      <jvmTarget>${java.version}</jvmTarget>
		       <javaParameters>true</javaParameters>
		</configuration>
	</plugin>
	<!-- 下面是其他相关插件-->
   </plugins>
<pluginManagement>

1.2 Starter Parent 是如何定义版本号的?

我们继续深入 pom.xml 文件配置:

10.jpg

windows 平台按住 ctrl, 点击 2.1.2.RELEASE, 可以看到如下配置内容:

<properties>
	<activemq.version>5.15.7</activemq.version>
	<antlr2.version>2.7.7</antlr2.version>
	<appengine-sdk.version>1.9.67</appengine-sdk.version>
	<artemis.version>2.6.3</artemis.version>
	<aspectj.version>1.9.2</aspectj.version>
	<assertj.version>3.11.1</assertj.version>
	<atomikos.version>4.0.6</atomikos.version>
	<bitronix.version>2.1.4</bitronix.version>
	<build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
	<byte-buddy.version>1.9.3</byte-buddy.version>
	<caffeine.version>2.6.2</caffeine.version>
	<cassandra-driver.version>3.6.0</cassandra-driver.version>
	<!-- 其他版本号配置 ... -->
</properties>
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot</artifactId>
			<version>2.1.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-actuator</artifactId>
			<version>2.1.2.RELEASE</version>
		</dependency>
		<!-- 其他依赖 ... -->
	</dependencies>
</dependencyManagement>

自定义某个依赖的版本号

Spring Boot Starter Parent 为我们为我们处理了版本依赖的问题,所以强烈建议您在项目的 pom.xml 文件继承它,如下所示:

<dependencyManagement>
    <dependencies>
        <dependency>
            <!-- 从 Spring Boot 中引入版本依赖 -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.1.2.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

scope 定义为了 import, 配置完成后,我们就可以自定义某个依赖的版本了:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <!-- 重写版本号 -->
            <version>2.1.1.RELEASE</version>
        </dependency>
    </dependencies>
</dependencyManagement>

之后,我们可以自定义某个依赖的版本号,以 jpa 为例,我们重写了默认的版本号,重新定义为我们想要的 2.1.1.RELEASE 版本。

最后

本教程中,我们学习了 Spring Boot 中是如何通过 Spring Boot Starter Parent 父级 pom 文件来统一管理版本依赖的,同时,也知道了自定义我们想要的版本号。最后,祝您学习愉快!

Ref

  • https://www.javadevjournal.com/spring-boot/spring-boot-starter-parent/

全部评论: 0

    我有话说: