yml 配置文件映射到实体类

Siona

yml 配置文件映射到实体类

多层嵌套的 yml

1. application.yml 配置文件

debezium:
  connector:
    name: my-connector-001
    connector-class: io.debezium.connector.mysql.MySqlConnector
  database:
    hostname: localhost
    port: 3306
    user: root
    password: 123456
    server:
      id: 1234
      name: my-server-1

2. 映射到配置类

package com.qx.dao.config;

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

import java.util.Map;

/**
 * Debezium 配置类
 * @Description TODO
 * @Version 1.0.0
 * @Date 2023/12/15 11:34
 * @Created by Siona
 */

@Component
@Data
@ConfigurationProperties(prefix = "debezium")
public class DebeziumConfigProperties {

    private Map<String, Object> connector;

    private Map<String, Object> database;

}

3. 使用配置类

package com.siona.dao.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.annotation.Resource;
import java.util.Map;

/**
 * @Description TODO
 * @Version 1.0.0
 * @Date 2023/12/15 14:21
 * @Created by Siona
 */
@Configuration
public class Test1 {

    @Resource
    private DebeziumConfigProperties debeziumConfigProperties;

    @Bean
    public void test() {
        Map<String, Object> obj = (Map<String, Object>) debeziumConfigProperties.getDatabase().get("server");
        System.out.println(obj.get("id"));
        System.out.println(obj.get("name"));
    }

}

直接使用 application.yml 中的属性

DebeziumProperties.java 配置类

package com.siona.dao.config;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * Debezium 配置类
 * @Description TODO
 * @Version 1.0.0
 * @Date 2023/12/18 16:02
 * @Created by Siona
 */
@Data
@Component
public class DebeziumProperties {

    @Value("${debezium.database.hostname}")
    private String hostname;

    @Value("${debezium.database.port}")
    private String port;
}

使用

    @Autowired
    private DebeziumProperties debeziumProperties;
    
    // 调用
    debeziumProperties.getHostname();
Last Updated 3/2/2024, 4:00:59 PM