我有一堂这样的课:
@Data
@Component
@ConfigurationProperties("a.config.props")
public class ClientProperties {
private String hostname;
private String port;
private String baseUrl;
private String endpoint;
}
我有数十个属性上下文,但对于 1 行,我必须重复整个类(class)。有没有一种简单而优雅的方法来拥有一个类并以某种方式动态传递属性上下文(可能是一个数组或类似的东西),以便我使用同一个类。
最佳答案
您可以只用一个类来描述您的众多且相同的属性 block ;
@Data
public class ClientProperties {
private String hostname;
private String port;
private String baseUrl;
private String endpoint;
}
然后引用它来将该单个类与不同的属性 block 链接起来;
@Configuration
public class PropertyConfigurer {
@Bean
@ConfigurationProperties("props.one")
private ClientProperties propsOne() {
return new ClientProperties();
}
@Bean
@ConfigurationProperties("props.two")
private ClientProperties propsTwo() {
return new ClientProperties();
}
@Bean
@ConfigurationProperties("props.three")
private ClientProperties propsThree() {
return new ClientProperties();
}
}
然后您可以通过它们的方法名称作为限定符来访问它们;
@Component
public class SomeService {
@Autowired
private ClientProperties propsOne;
@Autowired
private ClientProperties propsTwo;
@Autowired
private ClientProperties propsThree;
... some logic
}
关于java - 使用同一个类 Spring 多个 @ConfigurationProperties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57615063/