У меня есть простая конфигурация свойств в пакете psn.stats.config
@Configuration
@PropertySource("classpath:/api.properties")
public class AppConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
Мой main находится в пакете psn.stats и выглядит так:
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class StatsServiceApplication {
public static void main( String[] args ) {
SpringApplication.run( StatsServiceApplication.class, args );
}
}
Теперь я хочу использовать значения свойств в классе обслуживания из пакета psn.stats.connectors. Этот класс находится здесь:
@Component
public class SomeAPIConnector {
@Value( "${some.data.token.header}" )
private String tokenHeader;
@Value( "${some.data.token.value}" )
private String token;
@Value( "${some.data.api.address}" )
private String apiAddress;
}
Но когда я запускаю это приложение, все поля выше пустые. Я не знаю, почему SpringBoot не читает конфигурацию с файлом свойств. Вы можете мне с этим помочь?
@KarolDowbecki - Я сказал psn.stats для StatsServiceApplication и psn.stats.config для AppConfig.
@levacjeep - \ src \ main \ resources \ api.properties - это место расположения этого файла
Вы также можете добавить свой файл api.properties? some.data.token.header там определяется? Может быть, вы создаете SomeAPIConnector с new SomeAPIConnector()?
1) Вам не нужно объявлять свой собственный PSPC, потому что Boot сделает это за вас, и 2) вам нужно показать класс, в котором вы используете SomeAPIConnector, в частности, включая то, как вы получаете его копию.
Хорошо, я решил. Это я был виноват. Я не делал @Autowired Component, а создал его с помощью new ... Теперь он работает нормально.




При весенней загрузке нет необходимости добавлять @PropertySource ("classpath: /api.properties"), только создайте приложение .properties в src / main / resources Spring boot получит все свойства, и вы можете использовать их в SomeAPIConnector,
В src / main / resources application.properties содержание может быть:
some.data.token.header = XYZ
проверьте это: http://www.springboottutorial.com/spring-boot-application-configuration
Но я хочу, чтобы у этого свойства было другое название.
Где находится ваш api.properties по отношению к вашему корню? Убедитесь, что он доступен в вашем пути к классам.