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

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

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

这里给大家推荐一个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.20230611.cn/post/463.html

分享给朋友:

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

java增强型for循环

java增强型for循环

Java5 引入了一种主要用于数组的增强型 for 循环,类似js中的for inpublic class Member {     public static void main(String[]&...

java睡眠方法,java睡眠函数,java睡眠时间,java睡眠一分钟,java睡眠五秒钟

java睡眠方法,java睡眠函数,java睡眠时间,java睡眠一分钟,java睡眠五秒钟

(1).java睡眠函数Thread.sleep(时间);  //单位为毫秒(2).java睡眠函数例子Date dNow = new Date(); SimpleDateFormat ft = new&nbs...

java正则表达式判断字符串是否包含,java判断字符串是否包含

java正则表达式判断字符串是否包含,java判断字符串是否包含

pattern表示正则表达式,接收正则表达式作为参数例子:String content = "my name is gaojiufeng"; String pattern = "....

java匹配一个字符串在另外一个字符串中出现的次数,java正则start,java正则end

java匹配一个字符串在另外一个字符串中出现的次数,java正则start,java正则end

java匹配一个字符串在另外一个字符串中出现的次数,java正则start,java正则end// 正则 String pattern = "\\bgao\\b"; // 字符串 String content ...

java 可变参数

java 可变参数

java 可变参数// 定义方法 public static int sum(int... number) {     int result = 0;  &nb...

java析构函数,java finalize()

java析构函数,java finalize()

java析构函数finalize()java进行垃圾回收时会调用finalize(),用户可以用它来关闭已经打开的资源句柄等操作,具体场景比较多。和php的析构函数__destruct差不多但是这个方法在最新版本的java中提示已经废弃了,好像java9中干掉了它...