SpringBoot学习-02

SpringBoot配置

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

  1. application.properties
  2. application.yml

Yaml语法


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

key:(空格)value:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的

server:     
    port: 8081     
    path: /yaml

值的写法
  字符串默认不用加上单引号或者双引号;
  "":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
 name: "yaml \n list":输出;yaml 换行 list
  '':单引号;会转义特殊字符,特殊字符终只是一个普通的字符串数据
name:'yaml \n list' 输出: yaml \n list

map

student:
    name: xiaoming
    age: 20

数组

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

pets:  
    ‐ cat  
    ‐ dog  
    ‐ pig

配置文件值注入

//applicatio.yml
student:
  name: lb
  age: 20
  birth: 1998-07-08

  map:
    k1: v1
    k2: 12

  list:
    - java
    - python
    - ruby

  animal:
    name: dog
    age: 4

//student
@Component
@ConfigurationProperties(prefix = "student")
public class student {
    private String name;
    private int age;
    private String birth;

    private Map<String,Object> map;
    private List list;

    private animal animal;

    ...//省略get set等方法

@configuration和@value的区别

  @ConfigurationProperties

@V

alue

功能 批量注入配置文件中的属性 一个个指定
松散绑定 支持 不支持
SpEL 不支持 支持
JSE303数据校验 支持 不支持
复杂类型封装 支持 不支持

*JSE303数据校验(@Validated)

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

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


@propertysource

加载指定的文件配置


@PropertySource("classpath:student.properties")
@Component
@ConfigurationProperties(prefix = "student")
//@Validated
public class student {
//    @Value("张三")


    private String name;
//    @Value("#{1*21}")
//    @Email
    private int age;
    private String birth;

    private Map<String,Object> map;
    private List list;

    private animal animal;

spring boot推荐给容器中添加组件的方式: 推荐使用全注解的方式

/**
 * @author LB
 * @create 2019-04-16 10:31
 * @Configuration指定当前类是个配置类
 */
@Configuration
public class MyAppconfig {
    //将方法的返回值添加到容器中,默认的ID就是方法名
    @Bean
    public HelloService helloService(){
        System.out.println("成功了");
        return new HelloService();
    }
}

Profile

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

激活方式:spring.profiles.active = xxx

如果使用yml文件

server:
  port: 8081

spring:
  profiles:
    active: prod
---
server:
  port: 8888
spring:
  profiles: dev
---
server:
  port: 8889
spring:
  profiles: prod

配置文件的加载位置

springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文 件

  1. –file:./config/
  2. –file:./
  3. –classpath:/config/
  4. –classpath:/

优先级由高到低,高优先级的配置会覆盖低优先级的配置,互补配置

(***spring boot2.0之后,上下文的配置改为了server.servlet.context-path****)

外部文件配置

官方文档


自动配置原理

配置文件能写那些

官方文档

猜你喜欢

转载自blog.csdn.net/qq_40866897/article/details/89319292