之前,关于数据库的连接信息,端口号的设置等,我们会将它分门别类的写在多个文件中,但SpringBoot,它讲究统一的配置管理,我们想设置的任何参数都集中在一个固定位置和命名的配置文件,而该配置文件应该放置在Spring Boot工程的src/main/resources目录下,这是因为src/main/resources目录是Spring Boot默认的类路径,配置文件会被自动加载并可供用应用程序访问,且命名必须为application后缀为.properties/.yaml/.yml,原因如下所示:
在父依赖中已经规定好了该配置文件的后缀!
第一种以.properties为后缀的配置文件:
该文件是key:value
的形式,由于该配置文件是springboot为所有框架提供配置信息的地方,为了不引起key重复,由此选择多层命名的方式,但是这种格式书写起来特别麻烦,因此我们不推荐这种格式
server.port=80 server.servlet.context-path=/boot
第二种以.yaml或者yml为后缀的配置文件:
如下所示,它是有层次结构的数据序列化格式,可读性比较好
server: port: 80 servlet: context-path:/boot
无论是.properties还是.yaml/.yml都有各自的优势,这完全取决于实际需求,简单的配置我们可以使用.properties,而复杂的配置我们可以通过选择YAML获得更多的灵活性和可读性
yaml语法:
数据结构用树形结构呈现,通过缩进来表示层级(回车即可实现)
连续的项目(集合)通过减号"-“来表示
键值结构里面的key/value对用冒号”:"来分隔 YAML配置(注意值和冒号之间有空格!!!)
文件的扩展名是yaml或yml
场景应用:通过配置文件对实体类中的信息进行配置,并将其输出至浏览器
第一步:创建组件—User
package com.springboot.Bean; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.boot.context.properties.ConfigurationProperties; @Data @NoArgsConstructor @AllArgsConstructor @ConfigurationProperties(prefix = "user1") public class User { private String name; private String password; }
第二步:创建配置类—将User注册为组件
package com.springboot.MyConfigs; import com.springboot.Bean.User; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration(proxyBeanMethods = false) public class MyConfig { @Bean public User user1(){ return new User(); } }
第三步:在application.yaml文件中,对User中的属性赋值
user1: name: 易烊千玺 password: 112899 server: port: 8088
第四步:创建控制器
package com.springboot.Controller; import com.springboot.Bean.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class UserController { @Autowired User user; @RequestMapping("user") public User showMessage(){ return user; } }
启动项目:
但是有一个问题,即为我们在.yaml文件中添加我们自定义组件的配置信息时,它相当于一个记事本,没有任何的提示信息,对此,springboot为我们提供了一个依赖,如下所示:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
它的作用即为在我们对自定义的组件进行配置的时候,它会提示我们有哪些属性,效果如下所示: