Spring Boot 配置文件

2019-03-31  本文已影响0人  煮代码的烹饪师

二、配置文件

1、全局配置文件


在使用(上一篇最后提到的) Spring Initalizr 来创建项目时,在项目中会自动帮我们创建了一个配置文件 application.properties

这个就是 Spring Boot 应用的全局配置文件。除了我们熟悉的 properties 配置文件以外,Spring Boot 也支持 yml 格式的配置文件,如果我们需要使用使用 yml 配置文件,就直接在 resources 目录下创建一个名为 application.yml 的配置文件即可。下面就先来简单的介绍这种 yml 的语法。

2、YML 语法

3、配置文件装配bean

1. @ConfigurationProperties 装配 Bean

配置文件:

employee:
   name: jonas
   age: 18
   gender: true
   department:
   id: 1001
   departmentName: 技术部

JavaBean:

注解 ConfigurationPropertiese:告诉 Spring Boot 将本类中的所有属性和配置文件中相关的配置进行绑定,通过 prefix 属性指定配置文件中具体的哪个对象。

在测试环境中直接注入 Employee 并输出:

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringConfigApplicationTests {
​
 @Autowired
 Employee employee;
​
 @Test
 public void contextLoads() {
 System.out.println(employee);
 }
​
}

结果:

注意:

1.只有容器组件才能使用该注解(想想也知道,如果一个类都不在容器中,人家怎么给你注入进来呢)。

2.加上该注解后 IDE 会报个红线,具体的意思就是缺少一个配置文件的处理器,然后按照提示在 pom 中添加对应的依赖即可:

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-configuration-processor</artifactId>
 <optional>true</optional>
</dependency>

3.Spring Boot 在默认情况下会加载应用的全局配置文件(application.properties 或者 application.yml ),所以上面 @ConfigurationProperties 指定的 prefix 会在全局配置里面找映射关系,但是如果将一个 Bean 配置在全局配置文件有点不妥当吧,所以就有了下面的方式。

2.@PropertySource

@PropertySource 的作用是加载指定的配置文件。在 Bean 上加上该注解:

定义配置文件 employee.yml

employee:
 name: jonas
 age: 18
 gender: true
 department:
 id: 1001
 departmentName: 技术部

测试结果与上面的一致,也是OK的。

4.使用最原始的配置方式

@ImportResource :导入 Spring 的配置文件,通过这个注解就可以定义最原始的 xml 配置文件来进行装配 Bean 。这里不做介绍了。

5.通过配置类的方式装配

使用 @Configuration 来标识一个配置类,然后在类中通过 @Bean 标识方法,方法的返回值就是就会被添加到容器中,而这个 Beanid 就是方法名。

定义配置类,使用 @Configuration 标注:

@Configuration
public class BeanConfig {
 @Bean
 public Employee employeeBean(){
 Department department = new Department(1001, "技术部");
 return new Employee("jonas",18,true,department);
 }
}

在测试环境中输出该 Bean

结果无误。

4、多 Prifile 环境

在实际开发中往往存在着多种环境,比如开发环境,测试环境,生产环境。然而,Spring Boot 也替我们想好了处理办法,就是我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml ,然后在配置文件中指定 spring.profiles.active = dev 指定 profile

---
# 开发环境
server:
 port: 8083
spring:
 profiles:
 active: dev # 激活开发环境
​
​
---
# 测试环境
server:
 port: 8081
spring:
 profiles: test
​
---
# 生产环境
server:
 port: 8082
spring:
 profiles: prod
​
---

运行并查看日志信息:

结果就是我们指定的8083开发环境端口。

5、配置文件的加载位置以及加载优先级

我们都知道 Spring Boot 启动的时候会扫描 application.properties 或者 application.yml 配置文件作为 Spring Boot 的默认配置文件,那么问题来了,它会在哪里扫描呢,优先级又是怎样的呢?直接上答案:

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

上一篇 下一篇

猜你喜欢

热点阅读