SpringBootApplication не распознает конфигурацию свойств

У меня есть простая конфигурация свойств в пакете 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 не читает конфигурацию с файлом свойств. Вы можете мне с этим помочь?

Где находится ваш api.properties по отношению к вашему корню? Убедитесь, что он доступен в вашем пути к классам.

levacjeep 24.08.2018 18:56

@KarolDowbecki - Я сказал psn.stats для StatsServiceApplication и psn.stats.config для AppConfig.

Developus 24.08.2018 19:02

@levacjeep - \ src \ main \ resources \ api.properties - это место расположения этого файла

Developus 24.08.2018 19:02

Вы также можете добавить свой файл api.properties? some.data.token.header там определяется? Может быть, вы создаете SomeAPIConnector с new SomeAPIConnector()?

Karol Dowbecki 24.08.2018 19:04

1) Вам не нужно объявлять свой собственный PSPC, потому что Boot сделает это за вас, и 2) вам нужно показать класс, в котором вы используете SomeAPIConnector, в частности, включая то, как вы получаете его копию.

chrylis -cautiouslyoptimistic- 24.08.2018 19:06

Хорошо, я решил. Это я был виноват. Я не делал @Autowired Component, а создал его с помощью new ... Теперь он работает нормально.

Developus 24.08.2018 19:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
6
559
1

Ответы 1

При весенней загрузке нет необходимости добавлять @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

Но я хочу, чтобы у этого свойства было другое название.

Developus 24.08.2018 19:09

Другие вопросы по теме