博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot 配置文件详解
阅读量:6304 次
发布时间:2019-06-22

本文共 6480 字,大约阅读时间需要 21 分钟。

hot3.png

第二篇 : Spring Boot配置文件详解

文章首发于微信公众号《程序员果果》 地址:

SpringBoot使用一个全局的配置文件,配置文件名的

  • application.properties
  • application.yml

配置文件的作用 : SpringBoot底层都给我们配置好了,但有时候我们需要修改一些默认配置。

一、YMAL

1. YMAL与XML对比

YMAL :

server  port: 8081

XML :

8081

2. 基本语法

k:空格v : 表示一对键值对(空格必须有)

空格的缩进来控制层级关系;空格多少无所谓,只要左对齐的一列数据,都是同一个层级的。

server:	port: 8081	path: /hello

3. 配置文件值注入

application.yml

server:  port: 8081person:  lastName: zhangsan # 也可写成(松散语法) last-name:zhansang  age: 18  boss: false  birth: 2017/12/12  map: {k1: v1, k2 : 12}  list:    - lisi    - zhaoliu  dog:    name: 史努比    age: 2cat:  name: Tom  age: 5

实体类 Person

package com.gf.entity;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;import java.util.Date;import java.util.List;import java.util.Map;/** * 将配置文件中的配置,映射到这个组件中 * @ConfigurationProperties: 告诉SpringBoot将本类所有属性和配置文件中相关的配置进行绑定 *      prefix = "person" : 配置文件中那个下面的所有属性进行一一映射 * 只有这个这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties的功能 */@Component@ConfigurationProperties(prefix = "person")public class Person {    private String lastName;    private Integer age;    private Boolean boss;    private Date birth;    private Map
map; private List
list; private Dog dog; public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Boolean getBoss() { return boss; } public void setBoss(Boolean boss) { this.boss = boss; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } public Map
getMap() { return map; } public void setMap(Map
map) { this.map = map; } public List
getList() { return list; } public void setList(List list) { this.list = list; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } @Override public String toString() { final StringBuilder sb = new StringBuilder( "{\"Person\":{" ); sb.append( "\"lastName\":\"" ) .append( lastName ).append( '\"' ); sb.append( ",\"age\":" ) .append( age ); sb.append( ",\"boss\":" ) .append( boss ); sb.append( ",\"birth\":\"" ) .append( birth ).append( '\"' ); sb.append( ",\"map\":" ) .append( map ); sb.append( ",\"list\":" ) .append( list ); sb.append( ",\"dog\":" ) .append( dog ); sb.append( "}}" ); return sb.toString(); }}

实体类 Dog

package com.gf.entity;public class Dog {    private String name;    private Integer age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    @Override    public String toString() {        final StringBuilder sb = new StringBuilder( "{\"Dog\":{" );        sb.append( "\"name\":\"" )                .append( name ).append( '\"' );        sb.append( ",\"age\":" )                .append( age );        sb.append( "}}" );        return sb.toString();    }}

实体类 Cat

package com.gf.entity;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;@Componentpublic class Cat {    @Value( "${cat.name}" )    private String name;    @Value( "${cat.age}" )    private Integer age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    @Override    public String toString() {        final StringBuilder sb = new StringBuilder( "{\"Cat\":{" );        sb.append( "\"name\":\"" )                .append( name ).append( '\"' );        sb.append( ",\"age\":" )                .append( age );        sb.append( "}}" );        return sb.toString();    }}

pom.xml

4.0.0
com.gf
springboot-config
0.0.1-SNAPSHOT
jar
springboot-config
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
1.5.9.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-configuration-processor
true
org.springframework.boot
spring-boot-maven-plugin

SpringBoot 测试类

package com.gf;import com.gf.entity.Cat;import com.gf.entity.Person;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;/** * SpringBoot单元测试 * 可以在测试期间很方便的类似编码一样进行自动注入等容器的功能 */@RunWith(SpringRunner.class)@SpringBootTestpublic class SpringbootConfigApplicationTests {	@Autowired	Person person;	@Autowired	Cat cat;	@Test	public void contextLoads() {		System.out.println(person);		System.out.println(cat);	}}

运行 SpringbootConfigApplicationTests 的到结果

{	"Person": {		"lastName": "zhangsan",		"age": 18,		"boss": false,		"birth": "Tue Dec 12 00:00:00 CST 2017",		"map": {			k1 = v1,			k2 = 12		},		"list": [lisi, zhaoliu],		"dog": {			"Dog": {				"name": "史努比",				"age": 2			}		}	}} {	"Cat": {		"name": "Tom",		"age": 5	}}

@Value获取值和@ConfigurationProperties获取值比较

@ConfigurationProperties
功能 批量注入文件中的属性 一个一个指定
松散绑定(松散语法) 支持 不支持
SpEL 不支持 支持
JSR303数据校验 支持 不支持
复杂类型封装 支持 不支持

如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用**@Value**; 如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用**@ConfigurationProperties**;

关注我

欢迎扫码或微信搜索公众号《程序员果果》关注我,关注有惊喜~

转载于:https://my.oschina.net/u/2367201/blog/3054833

你可能感兴趣的文章
zip
查看>>
How to recover from root.sh on 11.2 Grid Infrastructure Failed
查看>>
rhel6下安装配置Squid过程
查看>>
《树莓派开发实战(第2版)》——1.1 选择树莓派型号
查看>>
在 Linux 下使用 fdisk 扩展分区容量
查看>>
结合AlphaGo算法和大数据的量化基本面分析法探讨
查看>>
如何在 Ubuntu Linux 16.04 LTS 中使用多个连接加速 apt-get/apt
查看>>
《OpenACC并行编程实战》—— 导读
查看>>
机器学习:用初等数学解读逻辑回归
查看>>
如何在 Ubuntu 中管理和使用逻辑卷管理 LVM
查看>>
Oracle原厂老兵:从负面案例看Hint的最佳使用方式
查看>>
把自己Github上的代码添加Cocoapods支持
查看>>
C语言OJ项目参考(2493)四则运算
查看>>
零基础入门深度学习(二):神经网络和反向传播算法
查看>>
find和xargs
查看>>
数据结构例程—— 交换排序之快速排序
查看>>
WKWebView代理方法解析
查看>>
IOS定位服务的应用
查看>>
[SMS&WAP]实例讲解制作OTA短信来自动配置手机WAP书签[附源码]
查看>>
IOS中图片(UIImage)拉伸技巧
查看>>