Spring Boot属性配置及使用

  大家都知道在Spring应用中XML配置是比较繁琐的,而在Spring Boot中应用的配置就显得非常简便了,因为我们在POM中引入了模块化的Starter POMs,而各个模块都是自己默认的配置,在上一遍应用中,我们甚至不需要使用任何配置就可以构建我们的Spring Boot应用。但是在日常开发中,因为项目的复杂性及场景的不同,我们就需要在Application中修改一些默认的配置和自定义属性配置,最常见的如:web属性、数据库连接、日志、缓存、模板以及多环境等。

Spring Boot配置方式及优先级

Spring Boot支持多种配置方式,各种配置方式的优先级不同,如下:(参考Spring Boot 属性配置和使用)
1. 命令行参数
2. 来自java:comp/env的JNDI属性
3. Java系统属性System.getProperties()
4. 操作系统环境变量
5. RandomValuePropertySource配置的random.*属性值
6. jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
7. jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
8. jar包外部的application.properties或application.yml(不带spring.profile)配置文件
9. jar包内部的application.properties或application.yml(不带spring.profile)配置文件
10. @Configuration注解类上的@PropertySource
11. 通过SpringApplication.setDefaultProperties指定的默认属性

  本文只介绍常用的ymlproperties配置方式,不对其他方式做详细介绍,感兴趣的同学可以阅读isea533大神的博客Spring Boot 属性配置和使用

Spring Boot YAML配置

  在Spring Boot中默认的配置是application.properties,因为YAML格式的简洁、易读写性,使它成为是当下比较流行的一种数据格式,常用来写配置文件。这里我们也使用它来配置Spring Boot应用。如果.properties.yml两种格式配置同时存在,由于优先级的不同,Spring Boot会使用默认的.properties的配置。

Spring Boot常用配置

  以下列举一部分项目中常用的属性配置。

application.yml

# web相关配置
server:
  port: 80
  context-path: /
  address: 127.0.0.1
  session:
    timeout: 30
spring:
  # 数据库连接
  datasource:
    url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
    initial-size: 5
    min-idle: 1
    max-active: 20
    test-on-borrow: true
  # redis
  redis:
    # 服务器地址
    host: 127.0.0.1
    # 端口
    port: 6397
    # 密码
    password:
    # 连接超时时间(毫秒)
    timeout: 0
    pool:
      # 连接池最大连接数(使用负值表示没有限制)
      max-active: 8
      # 连接池最大阻塞等待时间(使用负值表示没有限制)
      max-wait: -1
      # 连接池中的最大空闲连接
      max-idle: 8
      # 连接池中的最小空闲连接
      min-idle: 0
  # thymeleaf模板引擎
  thymeleaf:
    prefix: classpath:/templates/
    content-type: text/html
    mode: HTML5
    cache: false
# 日志
logging:
  config: classpath:logback.xml
  file: log
  level: debug

自定义属性配置及使用

  在实际项目中,由于项目的复杂性,我们常常需要配置来控制环境的多样性,比如各网关地址、文件上传目录控制。相信大部分web项目都会用到上传文件功能,在上传文件中我们需要设置上传的文件存在的路径及访问http url,这里我们配置这两个属性。

  在配置中,我们还可以使用变量${属性值}的方式来使用已有的配置属性,比如我们在这里增加一个httpImageHost属性来配置图片访问的url。

自定义属性配置

uploader:
  path: /usr/upload
  httpHost: http://127.0.0.1/
  httpImageUrl: "${uploader.httpHost}image"

使用配置属性值

  1. @ConfigurationProperties:用于绑定指定前缀下配置的同类的属性值到实体类中属性上。
  2. @Value:绑定单个配置属性值到类变量上。

  这里我们需要创建一个用于装载配置值的类UploaderProperties来接受配置文件中的值,然后使用@ConfigurationProperties注解并设置prefix,Spring Boot会自动把prefix下面的属性给映射到对应的属性当中。也可使用@Value注解为单个属性映射指定的配置值。然后再用@Component注解将此类标识为Spring bean,便可以在需要的地方使用@Autowired注入属性类,然后就可以使用它的属性啦。

UploaderProperties.java

package com.afei.study.springboot.property;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "uploader")
public class UploaderProperties {

    // @Value("${uploader.path}")
    private String path;

    // @Value("${uploader.httpHost}")
    private String httpHost;

    private String httpImageUrl;

    public String getHttpImageUrl() {
        return httpImageUrl;
    }

    public void setHttpImageUrl(String httpImageUrl) {
        this.httpImageUrl = httpImageUrl;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public String getHttpHost() {
        return httpHost;
    }

    public void setHttpHost(String httpHost) {
        this.httpHost = httpHost;
    }
}

多环境配置

  在实际项目开发中我们肯定会用到几个不同环境,比如:开发环境、测试环境、生产环境。在Spring Boot中多环境配置文件名需要按规范application-{profile}命名,{profile}就是对应不同的环境标识。常见的是:
1. application.yml:默认配置,配置通用内容及标识使用哪个环境。
2. application-dev.yml:开发环境配置
3. application-test.yml:测试环境配置
4. application-prod.yml:生产环境配置

  具体的配置文件会被加载,需要在默认配置application.yml文件中通过spring.profiles.active属性来设置,其值对应{profile}值。如:

spring:
  profiles:
    active: dev

  如果默认配置和我们使用的环境配置存在相同的属性,默认的配置将会被覆盖,可参考上面的配置文件优先级。我们可以使用java -jar的方式来指定配置文件启动Spring Boot应用,只需要在java -jar xxx.jar后面加上的spring.profiles.active={profile}参数就可以指定配置文件启动了,这样子就可以不用重复修改默认配置文件了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值