【Java】Springboot的配置文件

SpringBoot是约定大于配置的,所以很多配置都有默认值。如果想修改默认配置,可以用application.properties或application.yml(application.yaml)自定义配置。SpringBoot默认从Resource目录加载自定义配置文件。

1. properties文件

properties文件的配置多以key.key.key:value的形式组成,那么springboot本身有默认的一些配置,如果要修改这些默认的配置,可以在application.properties中进行配置修改。

2. yaml或者yml文件

yaml文件等价于properties文件,在使用过程中都是一样的效果。但是yml文件书写的方式和properties文件不一样。更加简洁,那么我们可以根据需要选择性的使用properties和yml文件。如果同时存在两个文件,那么优先级properties要高于yml。

语法特点如下:

  • 大小写敏感

  • 数据值前必须有空格,作为分隔符

  • 缩进的空格数目不重要,只需要对齐即可

  • # 表示注释

书写格式如下要求如下:key和key之间需要换行以及空格两次。 简单key value之间需要冒号加空格。

注意:yml语法中,相同缩进代表同一个级别

3. 获取配置文件中值

获取配置文件中的值我们一般有几种方式:

+ @value注解的方式 只能获取简单值
+ Environment的方式
+ @ConfigurationProperties

# 基本格式 key: value
name: zhangsan
# 数组   - 用于区分
city:
  - beijing
  - tianjin
  - shanghai
  - chongqing
#集合中的元素是对象形式
students:
  - name: zhangsan
    age: 18
    score: 100
  - name: lisi
    age: 28
    score: 88
  - name: wangwu
    age: 38
    score: 90
#map集合形式
maps: {"name":"zhangsan", "age": "15"}
#参数引用
person:
  name: ${name} # 该值可以获取到上边的name定义的值
  age: 12
@RestController
public class Test2Controller {
    @Value("${name}")
    private String name;

    @Value("${city[0]}")
    private String city0;

    @Value("${students[0].name}")
    private String studentname;

    @Value("${person.name}")
    private String personName;


    @Value("${maps.name}")//value注解只能获简单的值对象
    private String name1;

    @Autowired
    private Environment environment;
    
    @Autowired
    private Student student;

    @RequestMapping("/show")
    public String showHello() {
        System.out.println(name);
        System.out.println(city0);
        System.out.println(studentname);
        System.out.println(personName);
        
        System.out.println("environment name>>>>"+environment.getProperty("name"));
        System.out.println(">>>>"+student.getAge());

        return "hello world";
    }
}
@Component
@ConfigurationProperties(prefix = "person")
public class Student {
    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;
    }

}

	org.springframework.boot
	spring-boot-configuration-processor
	true

4. profile切换环境

在开发的过程中,需要配置不同的环境,所以即使我们在application.yml中配置了相关的配置项,但是在测试时,需要修改数据源等端口路径的配置,测试完成之后,又上生产环境,这时配置又需要修改,修改起来很麻烦。


---
#开发环境
server:
  port: 8081
spring:
  profiles:dev

---
#测试环境
server:
  port: 8082
spring:
  profiles:test

---
#生产环境
server:
  port: 8083
spring:
  profiles: pro

 a.加入依赖:


	
		
			org.springframework.boot
             spring-boot-maven-plugin
		
	

b.工程执行:clean package

c.jar包所有在目录执行 java -jar xxx.jar --spring.profiles.active=test

你可能感兴趣的:(springboot,Java日记,java)