配置文件

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

•application.properties •application.yml

配置文件的作用:修改SpringBoot自动配置的默认值;

SpringBoot在底层都给我们自动配置好;

YAML(YAML Ain't Markup Language) YAML A Markup Language:是一个标记语言

YAML isn't Markup Language:不是一个标记语言; 标记语言:

以前的配置文件;大多都使用的是 xxxx.xml文件; YAML:以数据为中心,比json、xml等更适合做配置文件;

YAML:配置例子

server:
  port: 8081

XML:

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

2、YAML语法

1、基本语法 k:(空格)v:表示一对键值对(空格必须有);

  以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的,属性和值也是大小写敏感

server:
port: 8081
path: /hello

2、值的写法

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

k: v:字面直接来写;

字符串默认不用加上单引号或者双引号;

" ":双引号;不会转义字符串里面的特殊字符;

特殊字符会作为本身想表示的意思 name: "zhangsan \n lisi":输出--》;zhangsan 换行 lisi '':

单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据 name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi

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

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

friends:
lastName: zhangsan
age: 20

行内写法:

friends: {lastName: zhangsan,age: 18}

数组(List、Set): 用- 值表示数组中的一个元素

pets:
‐ cat
‐ dog
‐ pig

行内写法

pets: [cat,dog,pig]

3、配置文件值注入

配置文件

person:
lastName: hello
age: 18
boss: false
birth: 2017/12/12
maps: {k1: v1,k2: 12}
lists:
‐ lisi
‐ zhaoliu
dog:
name: 小狗
age: 12

javaBean:/** 将配置文件中配置的每一个属性的值,映射到这个组件中

* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
* prefix = "person":配置文件中哪个下面的所有属性进行一一映射
*
* 想要使用springboot 的自动注入配置文件功能必须两个注解一起使用
* @Component 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
*
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
//getter setter

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

<!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐>
<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
功能 批量注入配置文件中的属性 一个个指定
松散绑定(松散语法) 支持(配置文件写(person.last-name与lastName都行)) 不支持
SpEL 不支持 支持@Value("#{11 * 2}")
JSR303(@Vaildated 数据校验) 支持 (比如@Email 校验Email格式 导入@Vaildated注解) 不支持
复杂类型封装 支持 (map类型List类型数据的获取) 不支持

(@Value从配置文件获取值的语法   @Value("${person.boos}")

配置文件无论是yml还是properties他们都能获取到值;

@Value 与 @ConfidurationProperties 使用的技巧:

如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;

如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

3、配置文件注入值数据校验

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
// @Value("huanghuanghui")
private String name;
private Integer age;
@Email
private String email;
@Value("${person.boos}")
private Boolean boos;
private List<Object> lists;
private Map<String,Object> maps;
private Date Brith;
//getter and setter

4、@PropertySource&@ImportResource&@Bean

@PropertySource:加载指定的配置文件;在实际开发中,我们不可能把所有的配置文件都写在springboot的配置全局配置文件中,

应该要自己创建配置文件进行注入才是合理的方式

/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
* prefix = "person":配置文件中哪个下面的所有属性进行一一映射
*
* 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
* @ConfigurationProperties(prefix = "person")默认从全局配置文件中获取值;
*
*/
@PropertySource(value = {"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix = "person")
//@Validated
public class Person {
/**
* <bean class="Person">
* <property name="lastName" value="字面量/${key}从环境变量、配置文件中获取值/#{SpEL}"></property>
* <bean/>
*/
//lastName必须是邮箱格式
// @Email
//@Value("${person.last‐name}")
private String lastName;
//@Value("#{11*2}")
private Integer age;
//@Value("true")
private Boolean boss;

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

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

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

不来编写Spring的配置文件:一下配置文件无法被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.atguigu.springboot.service.HelloService"></bean>
</beans>
/**
* 取得spring的ioc容器,测试容器中是否含有helloService这个组件
*/
@Autowired
ApplicationContext ioc; @Test
public void testHelloService(){
boolean helloService = ioc.containsBean("helloService");
System.out.println(helloService);//输出false
}

SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式

可以将配置类定义为主配置类,但是不推荐这么做:

@ImportResource(locations = "classpath:beans.xml")
@SpringBootApplication
public class SpringbootYamlApplication { public static void main(String[] args) {
SpringApplication.run(SpringbootYamlApplication.class, args);
}
}

推荐的方法是:

1、创建config文件夹,将左右的配置类全部放置在该文件下

2、配置类@Configuration- >Spring配置文件

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

/**
* @Configuration:指明当前类是一个配置类,这个配置类相当于我们之前的spring配置文件
*
* 我们以前在配置文件中使用<bean></bean>标签中添加组件
* 我们在配置文件中是用 @Bean 注解
*/
@Configuration
public class MyAppConfig {
/**
* 作用是将方法的返回值添加到容器中
* 这个组件的默认id就是这个方法的方法名
* @return
*/
@Bean
public HelloService helloService(){
System.out.println("开始向容器中添加组件。。。");
return new HelloService();
}
}

测试:


  @Autowired
  ApplicationContext ioc;
  @Test
public void testHelloService(){
boolean helloService = ioc.containsBean("helloService");
System.out.println(helloService);
}

输出:

2、spring boot 配置文件的更多相关文章

  1. Spring Boot 配置文件详解

    Spring Boot配置文件详解 Spring Boot提供了两种常用的配置文件,分别是properties文件和yml文件.他们的作用都是修改Spring Boot自动配置的默认值.相对于prop ...

  2. Springboot 系列(二)Spring Boot 配置文件

    注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 不管是通过官方提供的方式获取 Spring ...

  3. 史上最全的Spring Boot配置文件详解

    Spring Boot在工作中是用到的越来越广泛了,简单方便,有了它,效率提高不知道多少倍.Spring Boot配置文件对Spring Boot来说就是入门和基础,经常会用到,所以写下做个总结以便日 ...

  4. Spring Boot学习——Spring Boot配置文件application

    Spring Boot配置文件有两种格式: application.properties 和 application.yml.两种配置文件只需要使用一个. 这两种配置文件的语法有些区别,如下 1. a ...

  5. Spring Boot配置文件大全

    Spring Boot配置文件大全 ############################################################# # mvc ############## ...

  6. Spring Boot 配置文件和命令行配置

    Spring Boot 属于约定大于配置,就是说 Spring Boot 推荐不做配置,很多都是默认配置,但如果想要配置系统,使得软件符合业务定义,Spring Boot 可以通过多种方式进行配置. ...

  7. Spring Boot 配置文件密码加密两种方案

    Spring Boot 配置文件密码加密两种方案 jasypt 加解密 jasypt 是一个简单易用的加解密Java库,可以快速集成到 Spring 项目中.可以快速集成到 Spring Boot 项 ...

  8. 黑马_13 Spring Boot:04.spring boot 配置文件

    13 Spring Boot: 01.spring boot 介绍&&02.spring boot 入门 04.spring boot 配置文件 05.spring boot 整合其他 ...

  9. spring boot 配置文件properties和YAML详解

    spring boot 配置文件properties和YAML详解 properties中配置信息并获取值. 1:在application.properties配置文件中添加: 根据提示创建直接创建. ...

  10. Spring boot配置文件 application.properties

    http://www.tuicool.com/articles/veUjQba 本文记录Spring Boot application.propertis配置文件的相关通用属性 # ========= ...

随机推荐

  1. Redis整理第二波(启动、命令)

    启动 配置数据库数量: Redis默认开启16个数据库,不能像mysql自定义数据库名称,只能是数值,不能修改. 配置内存大小: 会生成一个和内存大小一样的文件. maxmemory 200mb #在 ...

  2. Dreams save us. Dreams lift us up and transform us into something better.

    Dreams save us. Dreams lift us up and transform us into something better.梦想能够拯救我们.梦想能够激励我们并让我们成为更好的人 ...

  3. canvas的globalAlphaAPI

    canvas的globalAlphaAPI

  4. ECMAScript Regex

    Everything has its own regulation by defining its grammar. ECMAScript regular expressions pattern sy ...

  5. jquery 滑块导航菜单

    带滑块的导航菜单,鼠标悬浮时,滑块会移动至鼠标位置,离开时,滑块会回到原来的位置,点击菜单之后滑块会停留在被点击菜单位置,等待下一次的鼠标悬浮事件或者点击事件,效果图: 图片效果不行,直接上代码: & ...

  6. IDEA下通过Git实现代码管理

    IDEA下通过Git实现代码管理 1.介绍 1.1 Git概述 Git是类似于SVN等代码管理软件,使用分布式技术实现.Github是互联网代码仓库,每个人可以在上面创建自己的仓库,使用git完成同g ...

  7. TP5.0: 显示错误信息

    在TP5中,我们运行的代码有错误无法执行时,只显示页面错误,而不显示错误信息 对我我来讲是无法接受滴!!毕竟我还是个小渣渣,查看了百度,解决方案是: 在application/config,php中找 ...

  8. 859. Buddy Strings (wrong 4 times so many cases to test and consider) if else**

    Given two strings A and B of lowercase letters, return true if and only if we can swap two letters i ...

  9. 继承FileInputFormat类来理解 FileInputFormat类

    import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.had ...

  10. Win10预览版激活信息

    微软在10月2日零点正式公开了Win10预览版的下载地址,这个时间大家应该逐步开始安装工作了,因此提出下面两个问题的用户特别多,IT之家再稍作告知一下.1.Win10预览版安装密钥是什么?答:NKJF ...