как лучше всего представить следующие свойства в Spring для каждой категории? В настоящее время мы реализовали для свойств aaa. У нас всегда есть два поля для каждой категории.
Мы хотим использовать один и тот же POJO для всех категорий. Пожалуйста, предложите лучший подход, который подходит.
Имя файла свойств пакет.свойства
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;
}
мы читаем это в @Configuration, используя @PropertySource
@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);
}
}
Вы можете и должны использовать https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-typesafe-configuration-properties
Чтобы справиться с этим.
@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
, где это необходимо.
Поскольку вы используете весеннюю загрузку, вы можете воспользоваться docs.spring.io/spring-boot/docs/current/reference/html/…