✨Spring Boot配置
📃个人主页: 不断前进的皮卡丘
🌞博客描述: 梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记
🔥网站推荐:千里之行,始于足下。每天坚持刷题,巩固所学知识,也为将来找工作,面试做好准备----- 刷题神器
Spring Boot使用一个全局的配置文件,通过配置文件,可以修改Spring Boot自动配置的默认值,配置文件名是固定的,文件名必须是
application
配置文件格式properties
或者yml
,比如application.properties
或者application.yml
比如,我们可以通过修改application.properties来自定义服务器的端口号
我们来新建一个项目
加载的优先级是从上到下,由高到低
开发过程中,至少需要三个环境(开发环境dev-测试环境test-生产环境pro),但是每一个环境的配置都不一样,比如数据库等各种配置,Spring Boot提供多环境配置的机制,让开发者灵活根据需求而切换不同的配置环境
比如:我们可以通过在不同环境下面,服务器端口号不同进行测试
在Spring Boot中多环境配置文件名必须满足:
application-{profile}.properties
的固定格式。
其中,{profile}对应的是我们的环境标识,比如:
application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境
在application.properties文件中添加配置,spring.profiles.active={profile}
来激活
比如:
spring-profiles.active=test 表示开启测试环境
yaml(YAML A/isn’t Markup Language),后缀名是.yaml
或者.yml
。有两层含义
yaml是以数据为中心
,比如json\xml等更适合作为配置文件
使用#
添加注释
# 服务器端口
server:
port: 8080
当我们创建一个Spring Boot项目的时候,它默认是给的配置文件是
.properties
的形式,我们也可以把它修改成yaml
的形式
k:(空格)v,表示一对键值对,空格一定要有
用缩进来控制层级关系,只要是左对齐的一列数据,都是同一个层级的
属性和值是区分大小写的
缩进的空格数不重要,但同级元素必须左侧对齐。
例如:
spring:
profiles: dev
datasource:
url: jdbc:mysql://127.0.01/banchengbang_springboot
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
YAML 支持以下三种数据结构:
字面量是指单个的,不可拆分的值,例如:数字、字符串、布尔值、以及日期等
name: "zhangsan \n lisi"
# 输出的结果是
zhangsan
lisi
name: 'zhangsan \n lisi'
# 输出的结果是
zhangsan \n lisi
birth: 1980/6/15
对象写法方式一:换行缩进
person:
lastName: zhangsan
age: 20
book:
price: 222
对象写法方式二:行内写法
book: {name: java,price: 2000}
缩进的写法:用-表示数组中的一个元素
pets:
- cat
- dog
- pig
行内写法,外部使用[]表示
pets: [cat,dog,pig]
测试
可以让属性和配置文件中的配置自动绑定,需要指明一个prefix(前缀)
先把文件编码方式改成UTF-8
还是以刚刚的Book类为例子,我们可以先在pom.xml文件中添加依赖
加入这个依赖的作用其实是为了便于我们写代码,我们在配置文件中可以看到提示
测试一下
可以指定加载一个独立的配置文件信息
用法:
比如说,我们本来是在全局配置文件中指定那些属性的信息,但是可能有很多需要配置,这个时候,我们可以把这些抽取出来,成为一个个小的配置文件,但是要注意的是,这个时候,这些配置文件只能是properties形式的,不能是yaml形式的
有一个地方需要注意,这里的话,我们得使用@Component注解,如果使用@EnableConfigurationProperties进行注入的话,其实我们在测试的时候,会发现属性是null
从Spring3.0,@Configuration用于定义配置类,可以替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法的返回值会被创建实例,托管给Spring容器
@Configuration标注在类上面,相当于把这个类作为Spring的xml配置文件中的
,作用是配置spring容器(应用上下文)
@Configuration注解的配置类有下面的几个要求:
1️⃣不可以是final类型
2️⃣不可以是匿名类
3️⃣嵌套的configuration必须是静态类
@Bean标注在方法上(返回某个实例的方法),等价于spring的xml配置文件中的
,作用是注册bean对象
我们先写一个实体类Stu
然后写一个自定义的配置类
测试
点进去@SpringBootApplication注解
我们可以看到里面有@ComponentScan(包扫描)和@SpringBootConfiguration(继承于@Configuration),这样子就会把扫描到的包下面的类注入到spring容器中