在Spring中为每个类别表示以下属性的最佳方法是什么?目前,我们已经为aaa属性实现了。对于每个类别,我们总是有两个字段。
我们要对所有类别使用相同的POJO。请提出适合的最佳方法。
属性文件名 package.properties
category.aaa.field1 = value1
category.aaa.field2 = value2
category.bbb.field1 = value1
category.bbb.field2 = value2
category.ccc.field1 = value1
category.ccc.field2 = value2
category.ddd.field1 = value1
category.ddd.field2 = value2
我们用
创建了一个POJO。@Data
public class CategoryPojo{
private String valueOne;
private String valueTwo;
}
我们正在使用@PropertySource在@Configuration中读取它
@Configuration
@ComponentScan(value = "com.category")
@PropertySource("classpath:package.properties")
public class CategoryConfig{
@Value("${category.aaa.field1}")
private String fieldOne;
@Value("${category.aaa.field2}")
private String fieldTwo;
@Bean(name = "getACategory")
public CategoryPojo getFields() {
return new CategoryPojo(fieldOne, fieldTwo);
}
}
答案 0 :(得分:1)
要解决这个问题。
@Data
@ConfigurationProperties(prefix="category")
public class MyProperties{
private CategoryPojo aaa;
private CategoryPojo bbb;
private CategoryPojo ccc;
private CategoryPojo ddd;
@Data
public static class CategoryPojo{
private String valueOne;
private String valueTwo;
}
}
然后可以将@EnableConfigurationProperties(classes = MyProperties.class)
放在您的主应用程序类或其他@Configuration
上,然后在需要的地方@Autowire
放置MyProperties
类。