有ConfigurationProperties
修饰的配置类A,A中有个List<B>
的成员变量b,类B有两个枚举类型的的成员变量如 c d,如何通过spring-configuration-metadata.json
把这个关系配置出来实现在编写application.yml的时候可以提示出类B中两个枚举类的值。类的关系大概如下:
class A{
List\<B\> b;
}
class B{
EnumC c;
List\<EnumD\> d;
}
有ConfigurationProperties
修饰的配置类A,A中有个List<B>
的成员变量b,类B有两个枚举类型的的成员变量如 c d,如何通过spring-configuration-metadata.json
把这个关系配置出来实现在编写application.yml的时候可以提示出类B中两个枚举类的值。类的关系大概如下:
class A{
List\<B\> b;
}
class B{
EnumC c;
List\<EnumD\> d;
}
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author suke
*/
@Getter
@AllArgsConstructor
@SuppressWarnings("all")
public enum TestEnum {
A_a(1,"a"),
B_b(2,"b"),
;
private Integer code;
private String message;
}
@Data
@Component
@ConfigurationProperties(prefix = "suke.config")
public class CuConfig {
/**
* 上传路径
*/
private String uploadPath;
/**
* 最大文件限制(MB)
*/
private Long maxSize;
/**
* 可动态修改日志配置
*/
private List<String> dynamicLogConfigPath;
private List<TestEnum> testEnums;
}
你好,我遇到的问题是 枚举所在的类 是一个List,即已你举的例子来说, CuConfig 类在su类中需要是作为一个List成员变量的存在,
不太现实,本身一层变量是固定名称,第二层级是可以自动提示的,但是你的是第二层及不确定,要第三层及自动提示,这就好比隔代预测了,在idea不知道你的第二层是会出现什么名字的变量,做不到提示。
如果你找到解决方案了,可以在这里分享下。
可能误解我的意思了,你看下我的类大概说明,A类是一个配置类,便携meta json文件时,property节点编写集合 b的时候是没问题的 ,但是如何编写 类B 中 c d两个属性,实现在yml中配置集合b的时候可以提出来c d
再直白一点,就是你例子中 suke下的config 是一个数组
我说的没问题的 ,首先:你的A是配置类,你的A下的变量B,是另一个类,B下的是枚举,然后你想B下面的枚举自动提示;
你提到的:你的变量A下的B的值是可变的,指的是的B的个数是可变的是吗,我理解由于B是一个数组,个数可变,但是B类下边的两个枚举变量还是固定的。yml中我按照如下写法
test:
b:
- c:c1
d: d1,d2,d3
- c:c2
d: d1,d2,d3
- c:c3
d: d1,d2,d3
再一个bean中注入A类,这些内容是可以正常设置到A类中的,也就是针对使用是没问题的,只是yml中不能正常解析 如上格式,我个人觉得是目前idea针对这种结构不支持
个数没关系,是内容可变,集合中的值是不确定的,不是人家idea的问题,是集合中的值这玩意本身不可预测