Solución:
Logré casi lo mismo que tú intentaste. primero, registre cada propiedad de los beans.
@Bean
@ConfigurationProperties(prefix = "serviceA")
public ServiceProperties serviceAProperties() {
return new ServiceProperties ();
}
@Bean
@ConfigurationProperties(prefix = "serviceB")
public ServiceProperties serviceBProperties() {
return new ServiceProperties ();
}
y en el servicio (o en algún lugar donde se usarán las propiedades) coloque un @Qualifier y especifique qué propiedad se conectará automáticamente.
public class ServiceA {
@Autowired
@Qualifier("serviceAProperties")
private ServiceProperties serviceAProperties;
}
Siguiendo esta publicación Guía para @ConfigurationProperties en Spring Boot, puede crear una clase simple sin anotaciones:
public class ServiceProperties {
private String url;
private String port;
// Getters & Setters
}
Y luego crea la clase @Configuration usando la anotación @Bean:
@Configuration
@PropertySource("classpath:name_properties_file.properties")
public class ConfigProperties {
@Bean
@ConfigurationProperties(prefix = "serviceA")
public ServiceProperties serviceA() {
return new ServiceProperties ();
}
@Bean
@ConfigurationProperties(prefix = "serviceB")
public ServiceProperties serviceB(){
return new ServiceProperties ();
}
}
Finalmente, puede obtener las propiedades de la siguiente manera:
@SpringBootApplication
public class Application implements CommandLineRunner {
@Autowired
private ConfigProperties configProperties ;
private void watheverMethod() {
// For ServiceA properties
System.out.println(configProperties.serviceA().getUrl());
// For ServiceB properties
System.out.println(configProperties.serviceB().getPort());
}
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)