Динамически добавлять банки в SpringBoot во время выполнения
Я использую SpringBoot 1.4.2. Я хочу иметь возможность запускать приложение SpringBoot из командной строки, указав дополнительные внешние jar-файлы, которые также должны быть проверены компонентом во время запуска приложения. Я не могу использовать spring-boot-maven-plugin
потому что у меня не будет pom весеннего загрузочного приложения, когда я хочу его запустить.
Я пробовал следующее до сих пор, где my-jar.jar
это приложение весенней загрузки и external-jar.jar
это внешний jar, который я хочу включить в командную строку:
java -cp my-jar.jar -Dloader.path=external-jar.jar -Dloader.main=com.my.Application org.springframework.boot.loader.JarLauncher
Это запускает, но не сканирует компонент external-jar.jar
java -cp external-jar.jar:my-jar.jar -Dloader.main=com.my.Application org.springframework.boot.loader.JarLauncher
Это не запускается, говоря @Autowired
условия в external-jar.jar
не были удовлетворены, хотя занятия в my-jar.jar
удовлетворить их. Я попытался изменить порядок банок на пути к классам, но это не решает проблему.
java -Dloader.path="external-jar.jar" -jar my-jar.jar
Это запускает, но не сканирует компонент external-jar.jar
Мой путь сканирования компонентов в верхней части моего класса SpringApplication содержит пути пакетов для обоих my-jar.jar
а также external-jar.jar
и я убедился, что при обращении external-jar.jar
непосредственно в моей поме компонент сканируется.
1 ответ
Вы используете не тот лончер. Поддержка для loader.path
а также loader.main
обеспечивается PropertiesLauncher
но вы используете JarLauncher
,