SpringBoot的配置文件

一.SpringBoot配置文件认识

  • SpringBoot中我们可以修改它的一个默认配置,这个直接在配置文件中完成即可。
  • 配置文件有两种,一种是properties文件,一种是yml文件,大家任选一种使用即可
  • 名称名必需是application.properties或者application.yml


application.properties修改端口:

server.port=8888

application.yml修改端口:

server:  port: 8881

二.yaml文件的认识与使用

咱们写代码时肯定是要写配置文件,过去我们经常会使用properties,xml或者json来做配置,但是yaml是感觉写配置文件更加适合。

YAML 语言( /ˈjæməl/)的设计目标,就是方便人类读写。它专门用来写配置文件的语言,非常简洁和强大

2.1 YAML的编写规则

  • 大小写敏感

  • 使用缩进表示层级关系

  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

  • 缩进时不允许使用Tab键,==只允许使用空格=

  • 冒号后面必需有空格

2.2 YAML的写法

YAML中可以写普通值(字符串,Boolean,Date等),对象与集合

2.2.1 普通值

  • 字符串不需要加引号
  • 如果加双引号(""),里面的内容会进行编译,比如说加一个 /n 就会换行
  • 如果加单引号(''),里面的内容会正常显示,比如说加一个 /n 会显示出来
username: zhangage: 34sex: true

2.2.2 对象

  • key-value键值对
employee:  username: zhang  age: 34  sex: true  
  • 行内写法
employee: {username: zhang,age: 34,sex: true}

2.2.3 集合数组

  • 用 - 表示数组中一个元素
hobbys:
   - java  - php  - h5
  • 行内写法
hobbys: {java,php,h5}

2.3 yaml注入值(@ConfigurationProperties方式)

  1. 准备相应的domain
  • Employee类
/**
 * @Component:SpringBoot发现这个注解才会读取这个类,并且配置一个bean出来
 * @ConfigurationProperties:SpringBoot发现这个注解,则会和配置中的数据与当前这个组件(bean)的值进行相应的绑定
 *   prefix:配置文件中的前缀名,相应的前缀对应配置中的前缀,数据再进行一一对应
 */@Component@ConfigurationProperties(prefix="emp")public class Employee {

    private String username;
    private String email;
    private Integer age;
    private Boolean sex;
    private Date bornDate;
    private List hobbys = new ArrayList();
    private Department department;

   //提供getter,setter与toString
}

  • Department类

public****classDepartment {

public class Department {
    private Long id;
    private String name;
    //提供getter,setter与toString
}
  1. 完成相应的yml配置
emp:
  username: 张三
  age: 12
  sex: true
  born-date: 1999/01/01
  email: [email protected]
  department: {id: 1, name: "IT部"}
  hobbys: [java,php,python]

  1. 功能测试看到效果
@RunWith(SpringRunner.class)@SpringBootTest
public class SpringbootHelloConfigApplicationTests {

    @Autowired
    private Employee employee;

    @Test
    public void contextLoads() {
        System.out.println(employee);
    }

}
  1. 引入依赖加入
  • 映射写配置时没有提示,我们可以加一个依赖
  • 加上后,运行/测试一下 就可以有提示了

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

三.propertie的写法

3.1 解决idea中写properties的中文问题

3.2 application.properties

emp.username=小王
emp.age=32
emp.born-date=1999/01/01
emp.department.id=1
emp.department.name=俱乐部
[email protected]
emp.sex=true
emp.hobbys=java,h5,ui

四.Value方法注入值

4.1 value注入的三个方式

  • 方式一:直接注入
  • 方式二: 获取配置文件中的值
  • 方式三: 写相应的计算表达式
@Component//@ConfigurationProperties(prefix="emp")public class Employee {

    @Value("${emp.username}")
    private String username;
    private String email;
    @Value("#{3*7}")
    private Integer age;
    @Value("false")
    private Boolean sex;
    ...省略
}

4.2 value与直接注入的区别

五.加载指定的配置文件

5.1 加载局部配置文件(@PropertySource)

  1. 新建一个文件


  2. 在文件中添加内容

emp.username=小王
emp.age=32
emp.born-date=1999/01/01
emp.department.id=1
emp.department.name=俱乐部
[email protected]
emp.sex=true
emp.hobbys=java,h5,ui
  1. 读取相应的文件配置
 @Component@ConfigurationProperties(prefix="emp")@PropertySource({"classpath:employee.properties"})
public class Employee {

    private String username;
    private String email;
}    

5.2 加载XML文件(@ImportResource)

SpringBoot虽然提倡零配置,但是真实开发依然会遇到需要用到xml的情况,所以SpringBoot也提供了相应的方案让我们可以直接读取xml

@ImportResource(locations = {"classpath:application.xml"})@SpringBootApplication
public class Springboot02ConfigApplication {

    public static void main(String[] args) {
        SpringApplication.run(Springboot02ConfigApplication.class, args);
    }

}

5.3 自定义配置类向容器注入组件

  1. 准备配置类
  • @Configuration:代表这是一个配置类
  • @Bean:当前方法的返回值是一个bean
/**
 * @Configuration:表示当前类是一个配置类(相当于一个配置文件)
 */@Configurationpublic class BeanConfig {

    /**
     * 把返回的值变成一个Bean,方法名就是bean的id
     * @return
     */
    @Bean
    public Employee employeeService(){
        return  new Employee();
    }
}
  1. 功能测试
@RunWith(SpringRunner.class)@SpringBootTestpublic class Springboot02ConfigApplicationTests {
    @Autowired
    private ApplicationContext applicationContext;
    @Test
    public void contextLoads() {
        //根据名称获取对应的数据
        Employee employee = (Employee)applicationContext.getBean("employeeService");
        System.out.println(employee);
    }
}

你可能感兴趣的:(SpringBoot的配置文件)