如果开发者按照2.1节的说明,使用Eclipse或者IntelliJ IDEA新建项目,那么可以在项目中发现,它还会创建一个属性文件application.properties,如图2-9所示。
图2-9 属性文件application.properties
application.properties是最重要的配置文件,关于这个文件可配置的内容,可参考Spring官网文章“Spring Boot Reference Documentation”。这些配置有成百上千项,但好在我们并不需要全部进行配置,只需要根据自己项目引用的starter来配置少数项即可。
本书不会像流水账那样罗列Spring Boot的配置项,因为这些很无趣也没有必要,而只是根据引入的starter,讨论与其相关的配置项。需要我们记住的是,通过这些约定的配置项,可以在很大程度上实现自定义开发。这就是Spring Boot的理念,配置尽量简单并且存在约定,屏蔽Spring内部的细节,使得Spring开箱后经过简单的配置即可让开发者快速开发和部署,也可以让测试人员快速测试。
application.properties是一个默认且重要的配置文件,通过该文件,我们可以根据自己的需要实现自定义。例如,假设当前8080端口已经被占用,我们希望使用8090端口启动Tomcat服务器,那么只需要在这个文件中添加如下配置项:
server.port=8090
此时以Java Application的形式运行类Chapter2Application就可以看到Spring Boot绑定的Tomcat服务器的启动日志:
...... Starting Chapter2Application using Java 18.0.1 with PID 8964 (F:\spring boot 3\chapter2\target\classes started by ASUS in F:\spring boot 3\chapter2) No active profile set, falling back to 1 default profile: "default" Tomcat initialized with port(s): 8090 (http) Starting service [Tomcat] Starting Servlet engine: [Apache Tomcat/10.1.1] Initializing Spring embedded WebApplicationContext Root WebApplicationContext: initialization completed in 699 ms ......
注意,从加粗的这行日志可以看出,Tomcat服务器是以8090端口启动的。相信你能明白了,只需要修改配置文件,就能将Spring Boot的默认配置变为自定义配置。
进行Spring Boot的参数配置除了使用属性文件,还可以使用yml文件,它会按照以下优先级进行加载:
● 命令行参数;
● 来自java:comp/env的JNDI
属性;
● Java系统属性(System.getProperties());
● 操作系统环境变量;
● RandomValuePropertySource配置的random.
*
属性值;
● jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件;
● jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件;
● jar包外部的application.properties或application.yml(不带spring.profile)配置文件;
● jar包内部的application.properties或application.yml(不带spring.profile)配置文件;
● @Configuration注解类上的@PropertySource;
● 通过SpringApplication.setDefaultProperties指定的默认属性。
实际上,yml文件的配置与属性文件只是简写和缩进的差别,差异并不大。本书为了缩减篇幅,在介绍Spring Boot的章节都采用属性文件,只有在第16章介绍微服务时,才会用yml文件,因为在微服务开发中使用yml文件更普遍。