#java #spring #spring-boot #plugins
#java #spring #spring-boot #Плагины
Вопрос:
Я должен создать менеджер плагинов, который обрабатывает Spring Bean, содержащийся внутри jar, в определенной внешней папке, в моем случае это externalPlugin.
Папка externalPlugin находится в моем classpath.
Моя проблема в том, что spring не загружает компоненты, когда они есть внутри jar. Если файл jar извлечен из /externalPlugin папки, Spring boot правильно загружает компоненты.
Есть ли конкретный способ создать jar, чтобы spring правильно загружал bean внутри JAR? или даже возможно загрузить bean во внешний Jar?
Спасибо, что уделили мне время.
В моем приложении spring boot для загрузки внешнего компонента я использую аннотацию
@ComponentScan({"com.app","com.plugin"})
Чтобы узнать, загружен ли мой bean, я использую и печатаю результат
String[] beanNames = ctx.getBeanNamesForType(AbstractPlugin.class);
внешние плагины jar создаются следующим образом с помощью команды jar cvf
/externalPlugin/pluginA.jar
|-META-INF/
| |-MANIFEST.mf
|
|-com/
|-plugin/
|- beanA1.class
|- beanA2.class
package com.plugin
@Component
public class BeanA1 extends AbstractPlugin{
}
package com.plugin
@Component
public class BeanA2 extends AbstractPlugin{
}
Ответ №1:
нашел то, что мне было нужно http://www.codevomit.xyz/bootlog/blog/how-to-provide-spring-boot-fat-jar
и специально сгенерировать jar с помощью eclispe