Как передать и проанализировать JSON для загрузки автономного приложения с весенней загрузкой? - PullRequest
0 голосов
/ 05 июня 2018

Например:

java -jar mySpringApplication --myJsonParameter="{\"myKey\":\"myValue\"}"

Это должно быть решено следующим образом:

public class MyService {
    @Autowired
    //or @Value("myJsonParameter") ? 
    private MyInputDto myInputDto;
}

public class MyInputDto {
    private String myKey;
}

Идея состоит в том, чтобы передать именованный параметр из командной строки (и следуя практикам внешней экранизации весны), но ввестиТипизированное значение, полученное из json, а не строка.

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Вы можете реализовать CommandLineRunner в своем основном классе springboot и затем подготовить Bean следующим образом:

@Bean
public MyInputDto prepareMyInputDto(){
    return new MyInputDto();
}

Затем в вашем методе run вы можете установить значения из аргумента командной строки.

@Override
public void run(String... args) throws Exception {
    MyInputDto bean = context.getBean(MyInputDto.class);
    bean.setMyKey(args[0]);
}
0 голосов
/ 05 июня 2018

Вы можете попробовать использовать свойство spring.application.json и аннотировать свой MyInputDto как @org.springframework.boot.context.properties.ConfigurationProperties.

Запустите ваше приложение так:

java -Dspring.application.json='{"myKey":"myValue"}' -jar mySpringApplication.jar

Реализация вашего сервиса:

@EnableConfigurationProperties(MyInputDto.class)
public class MyService {

    @Autowired
    private MyInputDto myInputDto;

    // use myInputDto.getMyKey();

}

@ConfigurationProperties
public class MyInputDto {
    private String myKey;

    public String getMyKey() { return this.myKey; }

    public void setMyKey(String myKey) { this.myKey = myKey; }
}

См. Внешняя документация по конфигурации Spring для получения дополнительной информации.

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