SpringBoot笔记(二):配置文件

虽然SpringBoot约定优于配置,但是在一些特殊情况下,我们依然需要自己定义一些配置,如数据库。下面我们就来研究下SpringBoot是如何配置的。

配置文件样式

SpringBoot中有两种格式的配置文件,properties和yaml。二者的优缺点如下:

  • properties文件是无序的,比较繁琐
  • yaml文件简介有序,而且在一些SpringCloud的配置中优势非常明显
  • yaml文件不支持@PropertyResource注解

配置文件位置及优先级

生成的SpringBoot项目默认在resources目录生成application.properties配置文件,但这个配置文件的位置并不是唯一,一共有4个位置可以放置配置文件,优先级如下:

  • 当前项目的根目录下的config目录下
  • 当前项目根目录下
  • 当前项目resources目录下的config目录下
  • 当前项目resources目录下
    SpringBoot笔记(二):配置文件
    配置文件的位置和默认名称可以通过IDEA的一些配置进行改变,但是笔者认为没有必要为了改变而改变,对此感兴趣的可以参考文末给出的江南一点雨的参考文章。

获取配置文件属性

自定义person类

@Component
@Data
public class Person {
    private Long id;
    private String name;
    private int age;
}

application.properties配置文件中

  person.id= 1
  person.age= 15
  person.name= zhangsan

采用Spring传统属性注入方式@Value

@Component
@Data
public class Person {
    @Value("${person.id}")
    private Long id;
    @Value("${person.name}")
    private String name;
    @Value("${person.age}")
    private int age;
}

注意: Person类要加上@Component交给Spring容器管理,否则无法注入。

application的配置文件中我们一般存放系统配置,这时我们一般采取引入person.properties文件,类似于数据库配置操作。在Spring中通常采用这种方式引入额外的配置文件

<context:property-placeholder location="classpath:person.properties"/>

在SpringBoot中我们只要加上@PropertySource("classpath:person.properties")。

yaml文件:yaml文件配置格式简洁有序,但是无法使用@PropertySource引入,下面演示下yaml文件
注入数组和javaBean集合的属性配置
配置文件:

my:
  cities:
    - beijing
    - shanghai

java代码:

  @Compent
  @ConfigurationProperties(prefix = "my")
  public class My{
    private List<String> cities;
  }

javaBean集合注入
配置文件:

  provinces:
     cities:
       - name: xuzhou
         lng: 120.23
         lat: 33.45
       - name: suzhou
         lng: 120.26
         lat: 28.45

java代码:

  @Compent
  @ConfigurationProperties(prefix = "provinces")
  public class Provinces{
      private List<City> cities;
  }

安全获取属性

SpringBoot中引入了类型安全注入,当实体类的变量非常多时,使用类型安全注入能减少开发量,避免出错。

@Component
@Data
@PropertySource("classpath:person.properties")
@ConfigurationProperties(prefix = "person")
public class Person {
    private Long id;
    private String name;
    private int age;
}

切换开发环境

在实际的项目开发中,我们需要不同的配置环境,标准格式:application-{环境}.yml

  • 开发环境:application-dev.yml
  • 测试环境:application-test.yml
  • 生产环境:application-prod.yml
    在application.yml中开启配置:
  spring:
    profiles:
       active: dev   

在application-dev.yml中:

  server: 
    port: 8088  

此时重启项目,项目的启动端口就从8080切换到8088了。

总结

配置文件是我们启动和熟悉项目的首要查看目标,后续笔记我们还会接触更多的配置。
参考资料:
江南一点雨:SpringBoot教程合集

上一篇:安卓开发日志捕获,错误日志捕获catch,崩溃日志捕获,抓取崩溃日志


下一篇:访问权限修饰符