Spring Boot学习入门篇(二)--使用Spring Boot

来源:互联网 发布:软件安全测试方法 编辑:程序博客网 时间:2024/06/05 15:27

简介:本篇将主要学习使用Spring Boot的更多细节,包括以下几个方面:
1、项目系统构建;
2、自动配置;
3、运行项目;
4、最佳实践(特别说明:官网文档说Spring Boot不过是供你使用的破依赖,但是了解最佳实践会让你的开发更容易。)。


项目系统构建

  Spring Boot建议我们构建项目的时候选择一个支持依赖管理和能把生产过程产生的artifact发布到maven中央仓库的构建工具,例如 Maven 或者Gradle都有很好的支持。

一,依赖管理

  每个版本的Spring Boot都提供了它支持的依赖列表,包括在Spring Boot应用中要使用的全部spring模块以及第三方库。这个依赖列表定义在spring-boot/spring-boot-dependencies/pom.xml中,作为一个依赖清单可以通过Maven或者Gradle被引用在项目中。查看这个spring-boot/spring-boot-dependencies/pom.xml,你可以发现Spring Boot已经通过 <properties>为这个依赖清单维护了相关的版本信息。所以,默认情况下在你的配置文件中你并不需要提供这些依赖的版本信息。当升级Spring Boot自身时,这些依赖也会相应升级。不过,有必要的情况下,你也可以在你的配置文件中明确一个你想想用的版本的依赖。而对于Spring框架相关模块,Spring Boot不建议你在你的项目文件中明确版本,因为每个版本Spring Boot都和具体版本的Spring框架关联。

二,构建工具之Maven

  Maven可以通过继承spring-boot-starter-parent获得一些默认的内容,spring-boot-starter-parent提供的一些特征如下:
  1、Java 1.8默认的编译器;
  2、UTF-8源码编码;
  3、当项目POM继承spring-boot-dependenciesPOM,项目POM中可以省略<version>版本标签;
  4、灵活的资源文件过滤特性(详细学习maven filtering《Maven中使用profile和filtering进行属性过滤》、《Maven resources 及 Filtering机制》);
  5、灵活的插件配置;
  6、对包含profile-specific文件的application.properties或application.yml进行灵活的资源过滤。

  继承spring-boot-starter-parent

  在你的项目pom文件中继承spring-boot-starter-parent可以简化你的项目配置,如下:

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.BUILD-SNAPSHOT</version></parent>

  Spring Boot建议应该在这个parent依赖中明确Spring Boot的版本,那么如果再引入别的一些starter依赖时,就可以省略版本。当然,你也可以在你的项目pom.xml文件中明确某个依赖的版本覆盖Spring Boot提供的默认的该依赖的版本。如下例子覆盖了Spring Boot 2提供的Spring Data的默认版本:

<properties>     <spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version></properties>

  不继承spring-boot-starter-parent,使用spring-boot-dependencies

  然而,你的Spring Boot项目可能需要继承自别的项目依赖,或者你想自己去声明所有的maven配置,那么你就不能直接继承spring-boot-starter-parent。为了依旧从Spring Boot依赖管理中中获益,你可以把spring-boot-dependencies作为一个依赖import导入进来。用法如下:

<dependencyManagement>    <dependencies>        <dependency>            <!-- Import dependency management from Spring Boot -->            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-dependencies</artifactId>            <version>2.0.0.BUILD-SNAPSHOT</version>            <type>pom</type>            <scope>import</scope>         </dependency>    </dependencies></dependencyManagement>

  注意,这种方式,不能像继承parent starter时直接使用property标签来覆盖Spring Boot提供的某些依赖的默认版本。这种非继承方式覆盖依赖默认版本,你需要在pom.xml文件中把需要非默认版本的依赖放在spring-boot-dependencies依赖的前面,如下升级Spring Data版本:

<dependencyManagement>    <dependencies>        <!-- Override Spring Data release train provided by Spring Boot -->        <dependency>            <groupId>org.springframework.data</groupId>            <artifactId>spring-data-releasetrain</artifactId>            <version>Fowler-SR2</version>            <scope>import</scope>            <type>pom</type>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-dependencies</artifactId>            <version>2.0.0.BUILD-SNAPSHOT</version>            <type>pom</type>        <   scope>import</scope>        </dependency>    </dependencies></dependencyManagement>

  使用Spring Boot Maven插件


自动配置

  


运行项目

  


最佳实践

  


参考资料:
1、《Spring Boot Reference Guide -III. Using Spring Boot》