2019独角兽企业重金招聘Python工程师标准>>>

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

文章首发于微信公众号《程序员果果》 地址:https://mp.weixin.qq.com/s/lffisIvrMkQrDUo9mXO4gQ

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

  • application.properties
  • application.yml

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

一、YMAL

1. YMAL与XML对比

YMAL :

serverport: 8081

XML :

<server><port>8081</port>
</server>

2. 基本语法

k:空格v : 表示一对键值对(空格必须有)
空格的缩进来控制层级关系;空格多少无所谓,只要左对齐的一列数据,都是同一个层级的。

server:port: 8081path: /hello

3. 配置文件值注入

application.yml

server:port: 8081person:lastName: zhangsan # 也可写成(松散语法) last-name:zhansangage: 18boss: falsebirth: 2017/12/12map: {k1: v1, k2 : 12}list:- lisi- zhaoliudog:name: 史努比age: 2
cat:name: Tomage: 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<String , Object> map;private List<Object> 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<String, Object> getMap() {return map;}public void setMap(Map<String, Object> map) {this.map = map;}public List<Object> getList() {return list;}public void setList(List<Object> list) {this.list = list;}public Dog getDog() {return dog;}public void setDog(Dog dog) {this.dog = dog;}@Overridepublic 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;}@Overridepublic 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;@Component
public 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;}@Overridepublic 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

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.gf</groupId><artifactId>springboot-config</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>springboot-config</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 导入配置文件处理器,配置文件进行绑定就会有提示 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

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)
@SpringBootTest
public class SpringbootConfigApplicationTests {@AutowiredPerson person;@AutowiredCat cat;@Testpublic 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 @Value
功能 批量注入文件中的属性 一个一个指定
松散绑定(松散语法) 支持 不支持
SpEL 不支持 支持
JSR303数据校验 支持 不支持
复杂类型封装 支持 不支持

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

关注我

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

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

Spring Boot 配置文件详解相关推荐

  1. spring boot配置文件详解

    spring boot配置文件详解 application.properties是spring-boot的核心配置文件,这个配置文件基本可以取代我们ssm或者ssh里面的所有的xml配置文件. 当我们 ...

  2. 全面的Spring Boot配置文件详解

    全面的Spring Boot配置文件详解 Spring Boot在工作中是用到的越来越广泛了,简单方便,有了它,效率提高不知道多少倍.Spring Boot配置文件对Spring Boot来说就是入门 ...

  3. (转) SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解

    springboot采纳了建立生产就绪spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...

  4. SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解

    springboot采纳了建立生产就绪Spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...

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

    springboot采纳了建立生产就绪Spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...

  6. 企业级 SpringBoot 教程 (二)Spring Boot配置文件详解

    springboot采纳了建立生产就绪Spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...

  7. 《深入理解 Spring Cloud 与微服务构建》第十六章 Spring Boot Security 详解

    <深入理解 Spring Cloud 与微服务构建>第十六章 Spring Boot Security 详解 文章目录 <深入理解 Spring Cloud 与微服务构建>第十 ...

  8. Spring Boot 单元测试详解+实战教程

    转载自   Spring Boot 单元测试详解+实战教程 Spring Boot 的测试类库 Spring Boot 提供了许多实用工具和注解来帮助测试应用程序,主要包括以下两个模块. spring ...

  9. Spring XML配置文件详解

    ​ spring配置文件是用于指导Spring工厂进行Bean生产.依赖关系注入(装配)及Bean实例分发的"图纸".Spring框架的配置文件是基于xml的,Spring强大的功 ...

最新文章

  1. Datawhale组队学习周报(第032周)
  2. SqlServer中存储过程中将Exec的执行结果赋值给变量输出
  3. 证书服务器无法启动,使用 SSL 证书后服务无法启动 - SQL Server | Microsoft Docs
  4. 【软件工程】知识点梳理(全)
  5. **bootstrap常见常用样式总结
  6. 中交叉的线_表现力一绝!用交叉线构图拍出来的照片,竟然可以这么吸睛!
  7. 西门子数控面板图解_学好四要点让你迅速成为数控机床“操作高手”
  8. Web 前端自学很苦?来,手把手教你,拿下前端!
  9. 解决用Python对Sqlite进行数据更新比较慢的一种方法
  10. springboot+openFeign+nacos+gateway开发实战
  11. 数据结构之基于Java的链接列表实现
  12. ubuntu 版mysql客户端工具_使用Ubuntu 20.04作为日常办公主力使用体验(远程维护工具)...
  13. js querySelector与getElementById
  14. chrome 长截屏插件
  15. GB35114视频流处理
  16. 2017年全国大学生电子设计竞赛 单相用电器分析监测装置(K题)
  17. 计算机自我检测方法,电脑问题的自我检测方法有哪些?
  18. MT5 EA交易期货-获得持仓
  19. 在 Windows 10 上安装 Coq 库 Mathematical Components
  20. t6UFO资产负债表

热门文章

  1. android gridview 停止滚动
  2. Android开发实践:掌握Camera的预览方向和拍照方向
  3. 高职高考难度大吗_成人高考与普通高考区别成人高考和高考的难度一样吗
  4. (0088)iOS开发之单例的写法以及重新认识
  5. wpf 加载本地html文件,c# – Wpf WebBrowser加载javascript
  6. python中的模运算符_Python中的字符串模运算符与format函数
  7. ubuntu常用指令
  8. git cmd 命令在已有的仓库重新添加新的文件夹
  9. android 软件实现架构。
  10. 基于SmartQQ协议的QQ聊天机器人-7