yaml配置复杂实体类属性

yaml配置复杂实体类属性不建议使用@value注解。

1. yaml配置

yaml配置意为在kudu下面添加一个info实体类集合,但是使用普通的接收方法无法使用

kudu:
  info:
    - hostname: 192.168.31.83
      username: root
      password: root
    - hostname: 192.168.31.84
      username: root
      password: root
    - hostname: 192.168.31.85
      username: root
      password: root
    - hostname: 192.168.31.86
      username: root
      password: root
  cluster: http://192.168.31.86:8881/v1/cluster
  username: user
  password: pwd

接受代码

	@Value("${presto.info}")
	private List<info> infoList;

info实体类 使用@Configuration/@Component
@ConfigurationProperties(prefix = "kudu.info")
无法解析

import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.io.Serializable;

@Data
@NoArgsConstructor
@Configuration
@ConfigurationProperties(prefix = "kudu.info")
public class Info implements Serializable {
	private String hostname;
	private String username;
	private String password;
}

2. 如何解析配置的实体类属性

配置实体类
info

import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@NoArgsConstructor
public class Info implements Serializable {
	private String hostname;
	private String username;
	private String password;
}

kudu

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

import java.io.Serializable;
import java.util.List;

@NoArgsConstructor
@Data
@Component
@ConfigurationProperties(prefix = "kudu")
public class Kudu implements Serializable {
	private List<Info> info;
        private String cluster;
        private String username;
        private String  password;
}

解析方式 在kudu实体类绑定配置文件,使用autowired注入

	@Autowired
	private Kudu kudu;
posted @ 2022-01-18 17:25  xiaomaixiaomai  阅读(260)  评论(0)    收藏  举报