Я с радостью использовал @Value
для ввода параметров командной строки в программы Spring Boot CommandLineRunner. т.е.Преобразование типа в Spring Boot CommandLineRunner app
java -jar myJar.jar --someParm=foo
... прекрасно работает с классами, содержащими:
@Autowired
public MyBean(@Value("someParm") String someParm) { ... }
Однако я сейчас наблюдаем это терпеть неудачу, когда PARM не является строкой.
Вот мой боб:
@Component
class MyBean {
private final LocalDate date;
@Autowired
public MyBean (@Value("date") @DateTimeFormat(iso=ISO.DATE) LocalDate date) {
this.date = date;
}
public void hello() {
System.out.println("Hello on " + date);
}
}
... и мой класс приложения:
@SpringBootApplication
public class MyApp implements CommandLineRunner {
@Autowired
private MyBean myBean;
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
@Override
public void run(String... args) throws IOException {
myBean.hello();
}
}
Когда я запускаю его как java -jar MyApp.java --date=2016-12-10
, я получаю трассировку стека окончание:
java.lang.IllegalStateException: Cannot convert value of type
[java.lang.String] to required type [java.time.LocalDate]:
no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:302)
Хотя документы указывают, что есть стандартный конвертер для String-> Date, я экспериментировал с registeri ng my own, и ударил тот же NullPointerException как этот пост: How to register custom converters in spring boot?
Что я могу сделать, чтобы сделать эту работу?
Java 8, Spring Загрузочный 1.3.5-RELEASE
Я попытался это - то же исключение, кроме типа. – slim