栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

003-Spring Boot配置绑定

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

003-Spring Boot配置绑定

前言

阅读本章,建议先阅读Spring Ioc 环境与配置。Spring Ioc 环境与配置中讲解了@Value绑定配置数据到java对象的方法。

使用@ConfigurationProperties进行绑定 结合@Configuration绑定
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties("my.prop")
public class MyProperties {
    
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

我们可以通过@ConfigurationProperties注解在绑定application.properties配置文件中的配置项。如示例中我们的MyProperties对象中的name属性将绑定配置文件中的my.prop.name属性,如果my.prop.name = 中国。那么MyProperties Bean的name属性的值即为“中国”。

我们的示例中还结合了@Configuration注解,表示该Bean可以通过Spring扫描到容器,然后通过Ioc注入到我们要使用的类中。

@Value也是可以直接绑定到对应的bean的属性的,但我个人推荐使用@ConfigurationProperties的方式进行配置属性的绑定。

注意别忘了getter/setter,当然你也可以使用lombok。

结合@Bean绑定
@Configuration
public class MyConfiguration {

    @Bean
    @ConfigurationProperties(prefix = "my.prop")
    public MyProperties myProperties () {
        return new MyProperties();
    }

}
绑定List和Map类型
  1. 定义Bean对应的属性字段
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.List;
import java.util.Map;

@Configuration
@ConfigurationProperties("my.prop")
public class MyProperties {
    
    private String name;

    private List colors;
    private Map map;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List getColors() {
        return colors;
    }

    public void setColors(List colors) {
        this.colors = colors;
    }

    public Map getMap() {
        return map;
    }

    public void setMap(Map map) {
        this.map = map;
    }
}
  1. 配置list属性
my.prop.colors=red,bule,yellow,green
# 或者
my.prop.colors[0]=red
my.prop.colors[1]= bule
  1. 配置map属性
my.prop.map.k1 = 值1
my.prop.map./k2 = 值2
my.prop.map.[/k3] = 值3

绑定后的值为:{k1=值1, k2=值2, /k3=值3},注意:第三个值的key值为"/k3"而不是k3

如果键没有被[ ]中括号包围,则任何非字母数字字符都将被删除。

  1. 配置随机属性
my.secret=${random.value}
my.number=${random.int}
my.bignumber=${random.long}
my.uuid=${random.uuid}
my.number-less-than-ten=${random.int(10)}
my.number-in-range=${random.int[1024,65536]}
@ConfigurationProperties方式绑定设置默认值
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties("my.prop")
public class MyProperties {
    private String name = "中国";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
自定义配置提示信息

使用@ConfigurationProperties方式绑定不仅可以设置默认值,还可以结合spring-boot-configuration-processor来实现我们自定义的配置在编译后可以在我们编辑配置文件时进行提示

  1. 引入spring-boot-configuration-processor

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

  1. 在Bean对应的字段上添加文档注释
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties("my.prop")
public class MyProperties {

    
    private String name = "中国";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
  1. 编译后编辑properties文件

注意:一定要编译后才会有效果

绑定规则

我们通过如下官网示例来理解绑定的匹配原则

@ConfigurationProperties(prefix = "my.main-project.person")
public class MyPersonProperties {

    private String firstName;

    public String getFirstName() {
        return this.firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

}

以上的代码与如下的配置属性都可以匹配

属性匹配规则
my.main-project.person.first-name.properties和.yml文件都支持
my.main-project.person.firstName标准的驼峰式语法。
my.main-project.person.first_name下划线表示法,这是在.properties和.yml文件中使用的替代格式。
MY_MAINPROJECT_PERSON_FIRSTNAME大写格式,在使用系统环境变量时推荐使用。
配置属性的验证

我们在配置对应的Bean上添加@Validated注解,即可使用Valid验证来验证配置属性。

@ConfigurationProperties("my.service")
@Validated
public class MyProperties {

    @NotNull
    private InetAddress remoteAddress;

    // getters/setters...

}

关于参数验证请查看Spring MVC参数验证1以及相关章节。

上一篇:Spring Boot 配置
下一篇:待续

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631004.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号