Spring Boot中的Binder类

介绍

Spring Boot中的Binder类是一个用于绑定属性的工具类。它可以将配置文件中的属性值绑定到Java对象中,从而方便地进行配置管理。

简单示例

java 复制代码
import org.springframework.boot.context.properties.bind.Binder;
import org.springframework.core.env.Environment;

@Data
public class MyConfig {
    private String name;
    private int age;

    public MyConfig(Environment environment) {
        Binder binder = Binder.get(environment);
        this.name = binder.bind("myconfig.name", String.class).orElse("lucifer");
        this.age = binder.bind("myconfig.age", Integer.class).orElse(25);
    }
}

使用Binder类将配置文件中的属性值绑定到这些属性中。在构造函数中,首先获取了一个Binder实例,然后使用bind方法将配置文件中的属性值绑定到Java对象中。如果属性不存在,则使用默认值。

配置文件中属性:

java 复制代码
myconfig.name=John
myconfig.age=25

需要将Environment对象传递给MyConfig的构造函数,以便Binder类可以访问配置文件中的属性值。在Spring Boot应用程序中,可以通过@Autowired注解将Environment对象注入到MyConfig类中。

java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

@Configuration
public class AppConfig {
    @Autowired
    private Environment environment;

    public MyConfig myConfig() {
        return new MyConfig(environment);
    }
}

常用方法

  • bind方法:将配置文件中的属性值绑定到Java对象中。
java 复制代码
@ConfigurationProperties(prefix = "example")
@Data
public class ExampleProperties {
    private String name;
    private int age;
}

ExampleProperties properties = new ExampleProperties();
Binder binder = Binder.get(environment);
binder.bind("example", Bindable.ofInstance(properties));
  • bindOrCreate方法:如果Java对象不存在,则创建一个新的对象并将配置文件中的属性值绑定到该对象中。
java 复制代码
ExampleProperties properties = Binder.get(environment)
        .bindOrCreate("example", Bindable.of(ExampleProperties.class));
  • bindProperty方法:将配置文件中的单个属性值绑定到Java对象的属性中。
java 复制代码
ExampleProperties properties = new ExampleProperties();
Binder binder = Binder.get(environment);
binder.bindProperty("example.name", Bindable.ofInstance(properties), String.class);
  • bindAnnotations方法:将Java对象中带有@ConfigurationProperties注解的属性绑定到配置文件中的属性值。
java 复制代码
@Data
@ConfigurationProperties(prefix = "example")
public class ExampleProperties {
    private String name;
    private int age;
}

ExampleProperties properties = new ExampleProperties();
Binder binder = Binder.get(environment);
binder.bindAnnotations(properties);
相关推荐
Json____10 分钟前
用 FastAPI + Vue3 打造一套完整的在线考试系统:从组卷到阅卷的业务闭环实践
后端·node.js·fastapi·it学习·wwwoop.com
小灰灰搞电子1 小时前
Rust+Slint 实现FTP客户端调试助手源码分享
开发语言·后端·rust
专业程序开发源2 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计
卷无止境2 小时前
面向arm64桌面客户端开发全景:语言、框架与生态
后端·python
莫逸风2 小时前
【毕设源码二期01】校园失物招领系统:从发布线索到核验交接
spring boot·毕业设计·课程设计·react
IT_陈寒3 小时前
JavaScript的闭包陷阱,这个坑我躺了三天才爬出来
前端·人工智能·后端
用户8356290780513 小时前
如何使用 Python 对 Excel 数据进行分组和分级显示
后端·python
vx_Biye_Design3 小时前
django房屋租赁推荐系统78455-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·课程设计·express
Mk598784 小时前
让 Agent 长出双手:一个注解搞定工具调用,AgentScope-Java @Tool 实战
后端
小溪学编程4 小时前
将 Bean 放入 Spring 容器中的方式有哪些?
java·后端·spring