S
S
Stanyslav Glubyshev2016-12-01 15:12:53
Java
Stanyslav Glubyshev, 2016-12-01 15:12:53

How to make a dynamically modular Spring Boot application?

Добрый день.
Нужно сделать модульное приложение на Spring framework, т.е. есть приложение Spring-Boot, и есть например модули в виде jar файлов в директории сервера(например modules). При запуске приложения нужно забрать все jar файлы и импортировать их в приложение в виде компонентов(плагинов) которые будут расширять функциональность приложения.
Первым делом я сделал загрузку jar файлов используя java.net.URLClassLoader, но работать с классами я могу только через рефлексию, что не подходит так как я использую аннотация вместо xml файлов, а через рефлексию аннотации не работают.
Получается что в модулях я даже не могу внедрять зависимости например:

@PersistenceContext
private EntityManager em;

Я наткнулся на osgi framework но при его использовании нужно отказаться от использования Spring-Boot, плюс ко всему говорят, что там не работают все аннотации и придётся использовать xml, что не хотелось бы. Мы наоборот хотим избавится от всех xml файлов и сделать проект на аннотациях и java классах.
И что ещё пугает osgi так это его монструозность и заморочки в зависимости для которых придётся делать свои bundle это ещё куча потраченного времени и уверен что без проблем не обойдётся и плюс время на изучение.
Пример проекта на github: https://github.com/Stanyslav/spring-boot-multiple-...

Answer the question

In order to leave comments, you need to log in

3 answer(s)
V
Victor Alenkov, 2016-12-01
@glubyshev

either I did not understand the essence of your question, or you need to look towards spring.factories

D
Dmitry Zaitsev, 2016-12-03
@dim_s

Use SPI https://habrahabr.ru/post/118488/ , this is the most simple and standard way to register your modules in your global system. I also advise you to simply use gradle with its module system and the standard application plugin, which allows you to build your applications with modules (jar). All jar modules will be in the lib folder and will work just fine with Spring Boot.

T
T86, 2017-04-05
@T86

https://github.com/DISID/disid-proofs/tree/master/...

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question