Как исправить ошибку нулевого значения при загрузке файла конфигурации - PullRequest
0 голосов
/ 21 января 2019

Spring Boot выдает Caused by: java.lang.IllegalArgumentException: null при автоматической настройке компонента.У меня нет null свойств в моем application.properties файле.Это загадка.

Я попробовал всего понемногу.Сообщение об ошибке указывает, что проблема связана со свойством factory.core в файле.Я попытался удалить его, но получаю более общую ошибку.Если я верну factory.core обратно, то ошибка будет пожаловаться именно на него.

У моего application.properties есть эти четыре:

factory.protocol=http
factory.host=localhost
factory.core=recommend
factory.port=8983

У меня есть эти аннотации

@Configuration
@ConfigurationProperties("factory")

В моем коде есть только установщики и получатели для этих полей.

private String protocol;
private String host;
private int port;
private String core;

Spring Boot записывает это.

Description:

    Failed to bind properties under 'factory' to com.ot.cem.recommender.engine.ClientFactory$$EnhancerBySpringCGLIB$$1530d0ff:

        Property: factory.core
        Value: recommend
        Origin: class path resource [application.properties]:4:14
        Reason: Failed to bind properties under 'factory' to com.ot.cem.recommender.engine.ClientFactory$$EnhancerBySpringCGLIB$$1530d0ff

Action:

Update your application's configuration
The exception is
    Caused by: java.lang.IllegalArgumentException: null
        at java.lang.reflect.Array.newArray(Native Method) ~[na:1.8.0_162]
        at java.lang.reflect.Array.newInstance(Array.java:75) ~[na:1.8.0_162]
        at org.springframework.boot.context.properties.bind.Bindable.box(Bindable.java:255) ~[spring-boot-2.0.6.RELEASE.jar:2.0.6.RELEASE]
        at org.springframework.boot.context.properties.bind.Bindable.of(Bindable.java:248) ~[spring-boot-2.0.6.RELEASE.jar:2.0.6.RELEASE]

Ответы [ 3 ]

0 голосов
/ 22 января 2019

Включили ли вы процессор аннотаций конфигурации в ваши зависимости?

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

См. https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/html/configuration-metadata.html#configuration-metadata-annotation-processor

Либо тот, либо Spring действительно не может найти ваш файл application.properties.Вы также можете проверить, пометив каждое поле, например, @Value("factory.prototype")

0 голосов
/ 22 января 2019

Спасибо за ответы.Я попытался удалить @Configuration, но тот же результат.У link2 было хорошее объяснение между двумя аннотациями.Я забыл указать в своем исходном сообщении, у меня также есть набор аннотаций @Component, потому что я автоматически связываю класс, который пытаюсь настроить в другом классе.

Я использую Gradle, поэтому у меня есть compile ("org.springframework.boot: весна-загрузки конфигурации процессор: 2.0.6.RELEASE ").Я прочитал ссылку на документы.Я думаю, что Spring находит application.properties в порядке, потому что ошибка упоминает одно из свойств.В моем случае factory.core.

Не уверен, что делать.Насколько я могу определить, это должно работать.

0 голосов
/ 22 января 2019

Вам не нужны @Configuration и @ConfigurationProperties.Попробуйте удалить @Configuration.Некоторые полезные ссылки: ссылка1 и ссылка2

...