SpringBoot 2 элементы остались несвязанными - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть файл application.yml с моим приложением Spring Boot, которое не хочет запускаться.

Согласно логам причина, по которой элементы [simulator.geo.b12, simulator.geo.b13, simulator.geo.b21, simulator.geo.c6, simulator.geo.host] остались несвязанными. Однако это свойство устанавливается в application.yml, и компилятор даже возвращает его значение.

Я буду очень признателен, если кто-нибудь сможет мне помочь с этим вопросом.

simulator:
    geo:
        host: http://localhost:8080/
        b12: http://localhost:8080/geo/b12
        b13: http://localhost:8080/geo/b13
        b21: http://localhost:8080/geo/b21
        c6: http://localhost:8080/geo/c6

и класс Java

@Getter
@Configuration
@ConfigurationProperties(prefix = "simulator",ignoreUnknownFields = false)
public class VendorSimulatorProperties {

    @Value("${simulator.geo.host:http://localhost:8080/}")
    private String initUrl;

    @Value("${simulator.geo.b12}")
    private String geoB12Url;

    @Value("${simulator.geo.b13}")
    private String geoB13Url;

    @Value("${simulator.geo.b21}")
    private String geoB21Url;

    @Value("${simulator.geo.c6}")
    private String geoC6Url;
}

когда я запускаю приложение, я получаю сообщение об ошибке:

**************************
APPLICATION FAILED TO START
***************************

Description:

Binding to target [Bindable@1c140c7c type = com.mathartsys.dlc.thirdparty.vendor.config.VendorSimulatorProperties$$EnhancerBySpringCGLIB$$eb0a550b, value = 'provided', annotations = array<Annotation>[@org.springframework.boot.context.properties.ConfigurationProperties(prefix=simulator, value=simulator, ignoreUnknownFields=false, ignoreInvalidFields=false)]] failed:

    Property: simulator.geo.b12
    Value: http://localhost:8080/geo/b12
    Origin: class path resource [config/application-dev.yml]:204:14
    Reason: The elements [simulator.geo.b12,simulator.geo.b13,simulator.geo.b21,simulator.geo.c6,simulator.geo.host] were left unbound.
    Property: simulator.geo.b13
    Value: http://localhost:8080/geo/b13
    Origin: class path resource [config/application-dev.yml]:205:14
    Reason: The elements [simulator.geo.b12,simulator.geo.b13,simulator.geo.b21,simulator.geo.c6,simulator.geo.host] were left unbound.
    Property: simulator.geo.b21
    Value: http://localhost:8080/geo/b21
    Origin: class path resource [config/application-dev.yml]:206:14
    Reason: The elements [simulator.geo.b12,simulator.geo.b13,simulator.geo.b21,simulator.geo.c6,simulator.geo.host] were left unbound.
    Property: simulator.geo.c6
    Value: http://localhost:8080/geo/c6
    Origin: class path resource [config/application-dev.yml]:207:13
    Reason: The elements [simulator.geo.b12,simulator.geo.b13,simulator.geo.b21,simulator.geo.c6,simulator.geo.host] were left unbound.
    Property: simulator.geo.host
    Value: http://localhost:8080/
    Origin: class path resource [config/application-dev.yml]:203:15
    Reason: The elements [simulator.geo.b12,simulator.geo.b13,simulator.geo.b21,simulator.geo.c6,simulator.geo.host] were left unbound.

эта проблема смущала меня долгое время, я надеюсь, что кто-то может дать мне несколько советов; я использовал springboot 2.0 спасибо

1 Ответ

0 голосов
/ 06 ноября 2018

Проблема в том, что вы используете @ConfigurationProperties неправильно. Вы используете @ConfigurationProperties или @Value, но не оба одновременно.

Решение либо исправит ваш класс, чтобы его можно было использовать для @ConfigurationProperties, либо удалите аннотацию @ConfigurationProperties.

@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "simulator.geo",ignoreUnknownFields = false)
public class VendorSimulatorProperties {

    private String host = "http://localhost:8080/";
    private String b12;
    private String b13;
    private String b21;
    private String c6;

}

Вам нужно исправить prefix, это должно быть simulator.geo, и ваши свойства должны быть названы в честь ключей в вашем файле. Вам также потребуется сеттер рядом с геттером. Однако это также должно изменить остальную часть вашей конфигурации, чтобы использовать вновь созданные геттеры.

Для вас, вероятно, легче удалить @ConfigurationProperties, поскольку вы на самом деле не использовали их в первую очередь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...