3.使用Spring Boot

3.1。构建系统

建议选择MavenGradle作为构建工具

每个Spring Boot版本都提供了它所支持的依赖关系的精选列表。实际上,您不需要为构建配置中的所有这些依赖项提供版本,因为Spring Boot会为您管理版本。当您升级Spring Boot本身时,这些依赖项也会以一致的方式升级。

Spring Boot的每个发行版都与Spring Framework的基本版本相关联。强烈建议不要指定其版本。

3.1.2。Maven

Maven用户可以从spring-boot-starter-parent项目继承以获得合理的默认值。父项目提供以下功能:

  • Java 1.8是默认的编译器级别。
  • UTF-8源编码。
  • 一个依赖管理部分,从Spring启动依赖性继承POM,管理公共依赖的版本。当在自己的pom中使用这些依赖关系时,可以为这些依赖关系省略<version>标记。
  • 具有执行ID 的repackage目标的repackage执行。
  • 明智的资源过滤。
  • 明智的插件配置(exec插件,Git提交ID和shade)。
  • 针对application.propertiesapplication.yml包括特定于配置文件的文件的明智资源过滤(例如application-dev.propertiesapplication-dev.yml

由于application.propertiesapplication.yml文件都接受Spring样式的占位符(${...}),因此Maven过滤已更改为使用@..@占位符。(您可以通过设置名为resource.delimiter的Maven属性来覆盖它)。

可以通过增加version标签指定版本号,也可以通过覆盖properties来指定版本号,但要与spring-boot-dependencies中的一致。例如:

<properties>
<lombok.version>1.18.10</lombok.version>
</properties>

spring-boot-dependencies文件路径为:

\.m2\repository\org\springframework\boot\spring-boot-dependencies\2.2.0.RELEASE\spring-boot-dependencies-2.2.0.RELEASE.pom

不想使用spring-boot-starter-parent,只使用Spring Boot提供的版本管理:

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

Spring Boot提供的Maven插件,可以将项目打包成可执行jar:

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

Maven命令打包成可执行jar:

mvn clean install

jar包所在目录:

target/springboot-0.0.1-SNAPSHOT.jar

3.1.3。Gradle

SpringBoot的Gradle插件官方文档

Gradle插件打包成可执行jar:

tasks->build->bootJar

jar包所在目录:

build/libs/springboot-0.0.1-SNAPSHOT.jar

3.1.5。Starters

Starters是一组便捷的依赖项描述符,帮助管理项目依赖。

所有官方Starters都遵循类似的命名方式

spring-boot-starter-*

第三方Starters命名为

thirdpartyproject-spring-boot-starter

Spring Boot官方提供了很多Starters,具体参考:

官方Starters

社区提供的Starters,具体参考:

社区Starters

3.2。结构化代码

不要使用默认包,建议遵循Java程序包命名约定。

@SpringBootApplication放在主程序上。

3.3。配置类

更推荐Java配置,@Configuration

无需将所有内容都放在一个@Configuration类中。@Import注解可以用于导入额外的配置类。另外,@ComponentScan用来扫描所有Spring组件,包括@Configuration类。

@ImportResource注解来加载XML配置文件

3.4。自动配置

Spring Boot自动配置会尝试根据添加的jar依赖项自动配置Spring应用程序。例如,如果HSQLDB位于类路径上,并且尚未手动配置任何数据库连接bean,那么Spring Boot会自动配置内存数据库。

通过将@EnableAutoConfiguration@SpringBootApplication注解添加到一个@Configuration类中来使用自动配置。

只能添加一个@SpringBootApplication@EnableAutoConfiguration注解

使用--debug开关启动应用程序。这样做可以启用调试日志以供选择核心记录器,并将条件报告记录到控制台。此开关可以在程序参数或配置文件中。开启后,可查看自动配置条件是否满足。

也可以在启动时指定:

java -jar myproject-0.0.1-SNAPSHOT.jar --debug

3.4.2。禁用特定的自动配置类

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

如果该类不在类路径中,则可以使用excludeName注释的属性,并指定完全限定的名称。还可以使用spring.autoconfigure.exclude属性来控制要排除的自动配置类的列表。

配置类定义为public,是为了可以被禁用,不推荐直接使用配置类。

3.5。Spring beans和依赖注入

可以自由使用任何标准的Spring Framework技术来定义bean及其注入的依赖关系。为使用@ComponentScan(查找您的bean)和使用@Autowired(进行构造函数注入)效果很好。

@SpringBootApplication自带代码扫描@ComponentScan

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
@ConfigurationPropertiesScan
public @interface SpringBootApplication {

如果bean具有一个构造函数,则可以省略@Autowired

@Service
public class DatabaseAccountService implements AccountService {
private final RiskAssessor riskAssessor; // @Autowired
public DatabaseAccountService(RiskAssessor riskAssessor) {
this.riskAssessor = riskAssessor;
}
// ...
}

3.6。使用@SpringBootApplication注解

单个@SpringBootApplication注解可用于启用以下功能,即:

@EnableAutoConfiguration:启用Spring Boot的自动配置机制

@ComponentScan:启用@Component对应用程序所在包及其子包的扫描

@ConfigurationPropertiesScan:启用对应用程序所在的软件包的@ConfigurationProperties的扫描

@Configuration:允许在上下文中注册额外的bean或导入其他配置类

@SpringBootApplication还提供了别名属性用来指定@EnableAutoConfiguration@ComponentScan的属性。

3.7。运行您的应用程序

将应用程序打包为jar并使用嵌入式HTTP服务器的最大优势之一是,您可以像运行其他应用程序一样运行应用程序。调试Spring Boot应用程序也很容易。您不需要任何特殊的IDE插件或扩展。

Maven命令运行Spring Boot:

mvn spring-boot:run

Gradle命令运行Spring Boot:

gradle bootRun

spring-boot-devtools模块对Spring Boot热部署提供了支持。

3.8。开发者工具

spring-boot-devtools模块可以包含在任何项目中,以提供其他开发时功能。

Maven:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>

Gradle:

configurations {
developmentOnly
runtimeClasspath {
extendsFrom developmentOnly
}
}
dependencies {
developmentOnly("org.springframework.boot:spring-boot-devtools")
}

运行完全打包的应用程序时,将自动禁用开发人员工具。如果您的应用程序是从java -jar特殊的类加载器启动的,或者从特殊的类加载器启动的,则将其视为“生产应用程序”。如果那对您不适用(即,如果您从容器中运行应用程序),请考虑排除devtools或设置-Dspring.devtools.restart.enabled=false系统属性。

在Maven中将依赖项标记为可选,或developmentOnly在Gradle中使用自定义配置(如上所示)是一种最佳做法,可防止将devtools过渡地应用到使用项目的其他模块。

重新打包的存档默认情况下不包含devtools。如果要使用某个远程devtools功能,则需要禁用excludeDevtoolsbuild属性以包含它。Maven和Gradle插件均支持该属性。

3.8.1。属性默认值

缓存选项通常由application.properties文件中的设置配置。例如,Thymeleaf提供了该spring.thymeleaf.cache属性。无需手动设置这些属性,spring-boot-devtools模块自动应用合理的开发时配置。

如果你不想被应用属性默认可以设置spring.devtools.add-properties到false你application.properties

有关devtools应用的属性的完整列表,请参见DevToolsPropertyDefaultsPostProcessor

3.8.2。自动重启

自动重启功能,目前来说不太实用,在IDEA实现自动重启可参考:

自动重启参考

20191110 Spring Boot官方文档学习(3)的更多相关文章

  1. 20191110 Spring Boot官方文档学习(4.2)

    4.2.外部化配置 Spring Boot使您可以外部化配置,以便可以在不同环境中使用相同的应用程序代码.您可以使用Properties文件,YAML文件,环境变量和命令行参数来外部化配置.属性值可以 ...

  2. 20191110 Spring Boot官方文档学习(4.1)

    4. Spring Boot功能 4.1.Spring应用 便捷的启动方式: public static void main(String[] args) { SpringApplication.ru ...

  3. Spring Boot 官方文档学习(一)入门及使用

    个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ...

  4. Spring boot官方文档学习(一)

    个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ...

  5. 20191106 Spring Boot官方文档学习(1-2)

    学习内容相关信息 最新版本:2.2.0 CURRENT GA 官网地址 官方文档地址 单页版文档地址 代码生成网址 2.入门 Spring Boot的主要目标是: 为所有Spring开发提供更快且入门 ...

  6. 20191127 Spring Boot官方文档学习(9.1-9.3)

    9."使用方法"指南 9.1.Spring Boot应用程序 9.1.1.创建自己的FailureAnalyzer FailureAnalyzer被包装在FailureAnalys ...

  7. 20191128 Spring Boot官方文档学习(9.4-9.8)

    9.4.Spring MVC Spring Boot有许多启动器包含Spring MVC.请注意,一些启动器包括对Spring MVC的依赖,而不是直接包含它. 9.4.1.编写JSON REST服务 ...

  8. 20191128 Spring Boot官方文档学习【目录】

    Spring Boot文档 入门 使用Spring Boot 3.1. 构建系统 3.2. 结构化代码 3.3. 配置类 3.4. 自动配置 3.5. Spring beans和依赖注入 3.6. 使 ...

  9. 20191128 Spring Boot官方文档学习(9.11-9.17)

    9.11.消息传递 Spring Boot提供了许多包含消息传递的启动器.本部分回答了将消息与Spring Boot一起使用所引起的问题. 9.11.1.禁用事务JMS会话 如果您的JMS代理不支持事 ...

随机推荐

  1. git 合并某个分支指定的文件

    $ git checkout <another-branch> <path-to-file> [<one-more-file> ...] $ git status ...

  2. linux shell getopt

    linux shell命令行选项与参数用法详解--getopts.getopt https://www.jianshu.com/p/6393259f0a13

  3. 2019年7月25日 shell练习--PAT题目1006:换个格式输出整数(失败案例)

    让我们用字母 B 来表示“百”.字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<),换个格式来输出任一个不超过 3 位的正整数.例如 234 应该被输出为 BBSSS123 ...

  4. 新建的COM组件中没有 MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)

    创建ATL组件之后,添加简单ATL对象,添加对话框资源,随后发现没有m_hWnd句柄,不响应初始化函数. 于是重新创建ATL组件,之后添加ATL控件,添加对话框资源,有m_hWnd句柄,但仍然不响应初 ...

  5. MYSQL安装失败,一打开就出现MySQL-Workbench已停止工作

    1.由于系统重新安装,环境都是新的,出现MySQL-Workbench已停止工作 解决:下载  微软常用运行库合集  安装即可

  6. 实战build-react(三)

    安装 redux-thunk yarn add redux-thunk 或 npm install redux-thunk --save https://github.com/zalmoxisus/r ...

  7. pd.read_csv参数解析

    对pd.read_csv参数做如下解释: pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infer', n ...

  8. (48)LINUX应用编程和网络编程之三Linux获取系统信息

    3.3.1.关于时间的概念 3.3.1.1.GMT时间 (1)GMT是格林尼治时间,也就是格林尼治地区的当地之间. (2)GMT时间的意义?[用格林尼治的当地时间作为全球国际时间],用以描述全球性的事 ...

  9. 【转】博弈论——acm

    转自http://blog.csdn.net/lgdblue/article/details/15809893 序:博弈是信息学和数学试题中常会出现的一种类型,算法灵活多变是其最大特点,而其中有一类试 ...

  10. python中类的设计问题(一些高级问题探讨,函数重载,伪私有,工厂模式,类方法等)

    从这里再次体现了python语言强大的灵活性.某些在高级语言中看似不严谨需要尽量避免的地方在python中都是允许的. 比如: (1),异常可以用来处理错误 (2),方法,类也都可以视为对象. (3) ...