一、配置文件

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

  • application.properties
  • application.yml

配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;

YAML(YAML Ain’t Markup Language)

YAML是“YAML不是一种标记语言”的外语缩写 [1] (见前方参考资料原文内容);但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。

标记语言:

以前的配置文件;大多都使用的是 xxxx.xml文件;

YAML:以数据为中心,比json、xml等更适合做配置文件;

YAML:配置例子

server:port: 8080

如果是xml:

<server><port>8080</port>
</server>

二、YAML语法介绍

1、基本语法

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

以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的

server:port: 8080path: /hello

属性和值也是大小写敏感;

2、值的写法

字面量:普通的值(数字,字符串,布尔)

k: v:字面直接来写;
字符串默认不用加上单引号或者双引号;

"":双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

name: "sihai\n lisi"

输出: sihai换行 lisi

’’:单引号会转义特殊字符,特殊字符最终只是一个普通的字符串数据

name: ‘sihai\n lisi’:输出;sihai\n lisi

对象、Map(属性和值)(键值对)

**k: v:**在下一行来写对象的属性和值的关系;注意缩进
对象还是k: v的方式

user:name: sihaiage: 20

行内写法:

user: {name: sihai, age: 18}

数组(List、Set)

用**-** 值表示数组中的一个元素

pets:
- cat
- dog
- pig

行内写法:

pets: [cat,dog,pig]

三、配置文件值注入

配置文件

user:name: sihaiage: 20lists:- lisi- zhangsanpig:name: 小猪age: 10

在javabean中的使用:

/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
*
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
*
* prefix = "person":配置文件中哪个下面的所有属性进行一一映射
*
* 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
*
*/
@Component
@ConfigurationProperties(prefix = "user")
public class User{private String name;private int age;private List<Object> lists;private Pig pig;
}

另外,我们可以导入配置文件处理器,以后编写配置就有提示了。

<!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐configuration‐processor</artifactId><optional>true</optional>
</dependency>
1、properties配置文件在idea中默认utf-8乱码解决

2、@Value获取值和@ConfigurationProperties获取值比较
@ConfigurationProperties @Value
功能 批量注入配置文件中的属性
松散绑定(松散语法) 支持
SpEL 不支持
JSR303数据校验 支持
复杂类型封装 支持 不支持

到底如何在哪个场景使用这两个获取配置文件的值呢?

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

3、配置文件注入值数据校验
@Component
@ConfigurationProperties(prefix = "user")
public class User{//使用value获取一个值@Value("${user.name}")private String name;private int age;private List<Object> lists;private Pig pig;
}
4、@PropertySource&@ImportResource&@Bean

@PropertySource:加载指定的配置文件

/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
* prefix = "person":配置文件中哪个下面的所有属性进行一一映射
*
* 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
* @ConfigurationProperties(prefix = "person")默认从全局配置文件中获取值;
*
*/
@PropertySource(value = {"classpath:user.properties"})
@Component
@ConfigurationProperties(prefix = "user")
public class User{//使用value获取一个值@Value("${user.name}")private String name;private int age;private List<Object> lists;private Pig pig;
}

@ImportResource:导入Spring的配置文件,让配置文件里面的内容生效

Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;
想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上

//导入Spring的配置文件让其生效
@ImportResource(locations = {"classpath:beans.xml"})

由于springboot推荐使用全注解的方式,所以我们可以使用全注解的方式来改造以前的bean 的配置方式

spring配置文件:

<?xml version="1.0" encoding="UTF‐8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring‐beans.xsd"><bean id="helloService" class="com.sihai.springboot.service.HelloService"></bean>
</beans>

springboot全注解方式:

1、配置类@Configuration对应Spring配置文件

2、使用@Bean给容器中添加组件

/**
* @Configuration:指明当前类是一个配置类;就是来替代之前的Spring配置文件
*
* 在配置文件中用<bean><bean/>标签添加组件
*
*/
@Configuration
public class MyAppConfig {//将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名@Beanpublic HelloService helloService(){System.out.println("配置类@Bean给容器中添加组件了...");return new HelloService();}
}

四、profile讲解

1、多Profile文件

我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml

默认使用application.properties的配置。

2、yml支持多文档块方式
server:port: 8080
spring:profiles:active: prod
‐‐‐
server:port: 8083
spring:profiles: dev
‐‐‐
server:port: 8084
spring:profiles: prod #指定属于哪个环境
3、激活指定profile

有一下几种方式:

1、在配置文件中指定

spring.profiles.active=dev

2、命令行:

java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

可以直接在测试的时候,配置传入命令行参数

3、虚拟机参数;

-Dspring.profiles.active=dev

玩转springboot:配置文件详细讲解相关推荐

  1. 近两年火热的微服务springboot不同配置文件详细讲解

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 精彩内容 java实战练习项目教程 2018微服务资源springboot.s ...

  2. 项目中applicaiton.yml配置文件详细讲解

    YAML Ain't a Markup Language springboot项目的配置文件不再采用xml的方式,而是使用yml格式,当前springboot的配置也有另外一种格式,applicait ...

  3. 无限纷争如何找到以前的服务器,无限纷争远古遗迹及幻境冒险玩法详细讲解

    无限纷争远古遗迹及幻境冒险玩法详细讲解.玩过无限纷争的小伙伴都知道,无限纷争共有六大玩法,勇者之路和暗影裂缝已经和大家讲解过了,几天带来的是无限纷争远古遗迹及幻境冒险玩法详细讲解,希望对大家有所帮助. ...

  4. nginx配置文件nginx.conf详细讲解(3)

    上一节我们介绍了nginx.conf的配置文件的3个模块内容,分别是main,events,stream(请自行脑图我画的图–对就是猪脸的那个).本节我们进行http模块的详细讲解.那在讲解之前我们在 ...

  5. 斗牛怎么玩法算法_干货:可转债怎么打新百分之百中签?详细讲解抢权配售,值得收藏...

    我相信大家之前肯定看过类似的标题,可能有的人看完也没懂,可能有人看完了也一知半解,索性我今天就给大家科普一下,详细讲解一下. 我觉得这时候,有时间的话,就好好看一遍,我相信绝对会有不一样的收获,而且会 ...

  6. SpringBoot教程(6) @Conditional 详细讲解和示例

    @Conditional 详细讲解和示例 一.@Conditional简介 二.示例:加载2个Bean 1. 定义Person类 2. 利用@Configuration + @Bean加载2个Bean ...

  7. delphi7存取配置文件与sqlserver数据库连接_SQL Server基础知识概念要点详细讲解

    SQL Server基础知识概念要点详细讲解 目录 基础概念 1.网状模型数据库 2.层次模型数据库 3.关系模型数据库 知识点实例总结 基础概念 SQL语言中,between and表示包括两边参数 ...

  8. Redis最详细讲解

    Redis最详细讲解 原文地址 本文脑图 redis基本数据结构 本文脑图 前言 Redis核心对象 String类型 int SDS SDS与c语言字符串对比 String类型应用 Hash类型 字 ...

  9. tkMapper插件的详细讲解

    tkMapper插件的详细讲解 一.tkMapper简介 tkMapper就是一个MyBatis插件,是在MyBatis的基础上提供的开发工具,可以让开发变得简单,提高开发效率. 作用: 1.提供了针 ...

最新文章

  1. Java基础-异常(Exception)处理
  2. 【Java Web前端开发】BootStrap入门
  3. tensorflow2.X安装及使用
  4. ckeditor java 使用,CKEditor5在自定义数据处理器中使用模型
  5. 从理论角度理解L1、L2正则化
  6. ##(两个井号)和#(一个井号)都是什么意思C and C++ 2008-09-23 21:18:27 阅读1106 评论0 字号:大中小 订阅 .
  7. sklearn自学指南(part54)--高斯过程的核函数
  8. RocketMQ入门到入土(七 )为什么同一个消费组设置不同tag会出现奇怪现象
  9. P1144 最短路计数
  10. 域用户开机自动加入本地管理员组VBS脚本+限制多点登录
  11. 软件测试项目案例.pdf,最经典软件测试案例.pdf
  12. win10升级助手_不用QQ也能电脑远程,win10这功能太良心了!真后悔晚发现
  13. 使用PowerCli来创建自定义ESXi ISO镜像
  14. vue:前端导出PDF 加图片:前端
  15. 酒店项目 酒店管理系统酒店在线预订系统
  16. 日元兑人民币用计算机怎么算,日元兑换人民币是以什么计算?谢谢我有日元 – 手机爱问...
  17. 全球5G模组厂商型号价格对比
  18. 史上最全 | 基于深度学习的3D分割综述(RGB-D/点云/体素/多目)
  19. 在 阿里云ECS 上安装 CDH6.2 standalong
  20. 分页器-DRF-自定义分页器给APIView视图类使用

热门文章

  1. c++新特性11 (10)shared_ptr六”构造函数unique_ptr参数“
  2. C++ Primer 5th笔记(chap 17 标准库特殊设施)regex_replace
  3. 区块链预言机(3)关键点说明
  4. 初等数论--二次剩余与二次同余方程--既约剩余系中二次剩余的个数
  5. 初等数论--整除--整数表示:算数分解定理/素因数分解式/进制表示
  6. 什么是informer机制
  7. 全网最强Python版《超级玛丽》小游戏,我还是你的马里奥嘛?
  8. 49字母异位词分组(哈希表)
  9. buu 凯撒?替换?呵呵!
  10. 18-Chain of trust bindings