Spring Boot配置文件讲解

Spring Boot配置文件讲解

一、Spring Boot支持两种配置文件

1、application.properties文件
2、application.yml文件

二、配置文件可以存放在四个位置

1、为项目创建一个config文件夹,存放在项目的config文件夹下
2、直接存放在项目下
3、在类路径新建一个config文件夹,放置在config文件夹下。
4、直接存放在类路径下
也可以使用spring.config.location去指定配置文件存在的路径
注意:它们之间的优先级由高到低,并且为互补配置。即如果(1)和(2)有相同配置,Spring Boot默认采用(1)。如果(2)有的配置(1)没有
,那么会加载(2)的配置
目录结构如下:
![目录结构](https://img-blog.csdnimg.cn/20200521231643129.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjc5MDU2,size_16,color_FFFFFF,t_70#pic_center)

三、Properties文件配置来将值注入到JavaBean中

1、在需要注入的JavaBean中使用@PropertySource注解引入配置文件[如果是application.properties,就可以不需要这个注解。]
2、@ConfigurationProperties(prefix = "person")表示去配置文件寻找信息的前缀。用于映射信息到字段中。
@PropertySource(value = {"classpath:test.properties"})
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String lastName;

    private String age;

    private boolean boss;

    private Date birth;

    private Map<String,Object> maps;

    private List<Object> list;

    private Dog dog;
    /*setter和getter方法省略**/
}
@Component
public class Dog {

    private String name;

    private Integer age;
    /**setter和getter方法省略**/
}

test.properties文件只需要如下配置,就可以将信息注入JavaBean

person.lastName=小王
person.age=20
person.boss=false
person.birth=2020/7/15
#这里是maps
person.maps.k1=v1
person.maps.你是=我是
#这里是设置数组
person.list=0,1,2,3,4
person.dog.name=20
person.dog.age=5

上述可能会存在乱码,注意在idea中将properties文件的编码格式改为UTF-8编码

四、使用YAML文件来将值注入到JavaBean中

1、语法:键和值之前一定要有空格(多少个空格都行,但是一定要有),比如: k1:(空格)v2
2、值的写法:
	普通字符串:直接按照key: value字符串来写
		value默认是不需要加引号的
		但是如果加了双引号,不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
		加了单引号,会转移特殊字符,特殊字符会变为一个普通的字符串数据
比如下面例子
实体类为:
@Component
@ConfigurationProperties(prefix = "testCommonString")
public class TestCommonString {
    //测试默认字符串
    private String defaultString;
    //测试带有双引号字符串
    private String doubleQuotes;
    //测试带有单引号字符串
    private String singleQuotes;
    /**省略setter和getter方法**/
}

application.yml配置为:
testCommonString:
  defaultString: 普通\n\r字符串
  doubleQuotes: "双引号\n\r字符串"
  singleQuotes: '单引号\n\r字符串'

最终的执行结果为:
defaultString:普通\n\r字符串
doubleQuotes:双引号
字符串
singleQuotes:单引号\n\r字符串

可以看出使用双引号时,特殊字符会表达自己原本的意思【换行】

	对象、maps(属性和值):
		person:
			lastName: name
			age: 20
		行内写法为:
			person: {lastName: name,age: 20}
	数组(list、set):
		arrays: 【注意:下面的横杠是一定要加的】
			- 1
			- 2
			- 3
		行内写法:arrays: [1,2,3]

总结一下:如果想要将值注入JavaBean,就需要使用@ConfigurationProperties标注类【使用Spring的@Value注解也可以,但是不支持复杂对象的封装】。还需要使用@Configuration将类加入到ioc容器中。
如果配置值的properties是非主配置文件的,就需要使用@PropertySource进行文件引入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值