当前位置:首页 > JAVA > 正文内容

spring boot 使用ConfigurationProperties注解将配置文件中的属性值绑定到一个 Java 类中

高老师1年前 (2023-08-25)JAVA564

这里给大家推荐一个spring boot的@ConfigurationProperties注解。@ConfigurationProperties 是一个spring boot注解,用于将配置文件中的属性值绑定到一个 Java 类中。它通常与 Spring Boot 应用程序一起使用,以简化配置文件的处理。

功能介绍:

  1. 属性绑定@ConfigurationProperties 可以将配置文件中的属性值绑定到一个 Java 类中的属性上。通过在类上添加该注解,可以指定要绑定的属性的前缀或名称,并自动将配置文件中对应的属性值赋值给类中的属性。
  2. 类型安全:通过属性绑定,@ConfigurationProperties 提供了类型安全的方式来读取配置文件中的属性值。它允许将属性值直接绑定到正确的数据类型,而不需要手动进行类型转换。
  3. 自动装配:使用 @ConfigurationProperties 注解的类可以轻松地与 Spring Boot 的自动装配机制集成。当配置文件中的属性值被绑定到类的属性上后,可以通过依赖注入等方式在应用程序的其他组件中直接使用这些属性值。
  4. 属性验证@ConfigurationProperties 支持属性值的验证。可以通过在属性的 setter 方法上使用相应的验证注解,例如 @NotNull@Min@Max 等,来确保属性值的有效性。
  5. 动态刷新:在 Spring Boot 中,使用 @ConfigurationProperties 绑定的属性值可以与 Spring 的动态刷新机制集成,以实现属性值的动态更新。通过使用 @RefreshScope 注解,可以在属性值发生变化时刷新该类的实例。

总之,@ConfigurationProperties 提供了一种方便的方式来读取和绑定配置文件中的属性值,并提供了类型安全、自动装配、属性验证和动态刷新等功能,帮助简化配置文件的处理和使用。

(1).创建配置文件进行测试,D:\java\x2_sap_file_collect\src\main\resources\application.properties

##############################FTP配置信息###############################
ftp.host=192.168.0.93
ftp.port=21
ftp.username=sap
ftp.password=sap_2023_sap_gao
ftp.initial-size=3
ftp.encoding=UTF-8
ftp.buffer-size=8192
ftp.isopen=true
ftp.retry-count=5
ftp.work-dir=/
ftp.root=/
ftp.max-total=100
ftp.min-idel=2
ftp.max-idle=5
ftp.max-wait-millis=30000
ftp.enter-local-active-mode=false

(2).创建配置文件映射的类文件,D:\java\x2_sap_file_collect\src\main\java\com\x2_sap_collect\config\FtpConfig.java

package com.x2_sap_collect.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "ftp")
public class FtpConfig {

    private String host;
    private Integer port;
    private String username;
    private String password;
    private Integer initialSize = 0;
    private String encoding = "UTF-8";
    private Integer bufferSize = 4096;
    private Integer retryCount = 3;
    private String root = "/";
    private String workDir = "/";
    private Integer maxTotal = 100;
    private Integer minIdel = 2;
    private Integer maxIdle = 5;
    private Integer maxWaitMillis = 30000;
    private Boolean enterLocalActiveMode = false;
    private Integer connectTimeoutMillis = 30000;

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public Integer getPort() {
        return port;
    }

    public void setPort(Integer port) {
        this.port = port;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getInitialSize() {
        return initialSize;
    }

    public void setInitialSize(Integer initialSize) {
        this.initialSize = initialSize;
    }

    public String getEncoding() {
        return encoding;
    }

    public void setEncoding(String encoding) {
        this.encoding = encoding;
    }

    public Integer getBufferSize() {
        return bufferSize;
    }

    public void setBufferSize(Integer bufferSize) {
        this.bufferSize = bufferSize;
    }

    public Integer getRetryCount() {
        return retryCount;
    }

    public void setRetryCount(Integer retryCount) {
        this.retryCount = retryCount;
    }

    public String getRoot() {
        return root;
    }

    public void setRoot(String root) {
        this.root = root;
    }

    public String getWorkDir() {
        return workDir;
    }

    public void setWorkDir(String workDir) {
        this.workDir = workDir;
    }

    public Integer getMaxTotal() {
        return maxTotal;
    }

    public void setMaxTotal(Integer maxTotal) {
        this.maxTotal = maxTotal;
    }

    public Integer getMinIdel() {
        return minIdel;
    }

    public void setMinIdel(Integer minIdel) {
        this.minIdel = minIdel;
    }

    public Integer getMaxIdle() {
        return maxIdle;
    }

    public void setMaxIdle(Integer maxIdle) {
        this.maxIdle = maxIdle;
    }

    public Integer getMaxWaitMillis() {
        return maxWaitMillis;
    }

    public void setMaxWaitMillis(Integer maxWaitMillis) {
        this.maxWaitMillis = maxWaitMillis;
    }

    public Boolean getEnterLocalActiveMode() {
        return this.enterLocalActiveMode;
    }

    public void setEnterLocalActiveMode(Boolean enterLocalActiveMode) {
        this.enterLocalActiveMode = enterLocalActiveMode;
    }

    public Integer getConnectTimeoutMillis() {
        return connectTimeoutMillis;
    }

    public void setConnectTimeoutMillis(Integer connectTimeoutMillis) {
        this.connectTimeoutMillis = connectTimeoutMillis;
    }
}

(3).尝试使用配置信息,D:\java\x2_sap_file_collect\src\main\java\com\x2_sap_collect\task\V1.java

package com.x2_sap_collect.task;

import com.x2_sap_collect.config.FtpConfig;
import org.springframework.shell.standard.ShellComponent;
import org.springframework.shell.standard.ShellMethod;

@ShellComponent
public class V1 {

    /**
     * 配置信息
     */
    private final FtpConfig fTpConfig;

    /**
     * 构造函数初始化配置
     * @param fTpConfig
     */
    public V1(FtpConfig fTpConfig) {
        this.fTpConfig = fTpConfig;
    }

    @ShellMethod("Add two integers together.")
    public int add(int a, int b) {
        // 打印配置信息
        System.out.println(fTpConfig.toString());
        return a + b;
    }
}

需要注意此注解需要maven依赖,坐标地址如下

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

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.5b1.cn/post/463.html

分享给朋友:

“spring boot 使用ConfigurationProperties注解将配置文件中的属性值绑定到一个 Java 类中” 的相关文章

Java不用编译直接执行

Java不用编译直接执行

public class test {     public static void main(String[] args) {     &...

java编译编码问题,java编译执行时编码问题

java编译编码问题,java编译执行时编码问题

public class test {     public static void main(String[] args) {     &...

java限制1个方法同一时间只能被一个线程访问

java限制1个方法同一时间只能被一个线程访问

java限制1个方法同一时间只能被一个线程访问public synchronized void setOrderPay(){ }加上synchronized 修饰符即可...

java final 修饰符,java通过final修饰符创建常量,,java通过final修饰符声明方法不可被修改

java final 修饰符,java通过final修饰符创建常量,,java通过final修饰符声明方法不可被修改

(1).final 修饰符通常和 static 修饰符一起使用来创建类常量。(2).父类中的 final 方法可以被子类继承,但是不能被子类重写,声明 final 方法的主要目的是防止该方法的内容被修改。public class Member {   ...

java Character 类,java判断字符是否是一个字母,java判断字符是否是一个数字,java判断字符是否是一个空白,java判断字符是否是小写字母,java判断字符是否是大写字母,java转换字符为大写,java转换字符为小写

java Character 类,java判断字符是否是一个字母,java判断字符是否是一个数字,java判断字符是否是一个空白,java判断字符是否是小写字母,java判断字符是否是大写字母,java转换字符为大写,java转换字符为小写

java判断字符是否是一个字母System.out.println(Character.isLetter('a'));java判断字符是否是一个数字System.out.println(Character.isDigit('0'));java判断字符是否是一个空白Sy...

java String 类 ,java 字符串类,java创建字符串,java获取字符串长度,java连接字符串,java格式化字符串

java String 类 ,java 字符串类,java创建字符串,java获取字符串长度,java连接字符串,java格式化字符串

在java中字符串属于对象,刚开始我就疑惑为什么int char等类型都是小写,结果String是大写,java太反人类,后来才知道String是对象。(1).java创建字符串String text = "net"; String tex...