Pluginy / moduły w środowisku zakładowego frameworku

Pluginy / moduły w środowisku zakładowego frameworku
ZD
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
0

Są sobie moduły / pluginy (odrębne projekty JAR) które maja żyć wewnątrz większej całości (implementując interfejs MyPlugin), mówiąc obrazowo.
"main" jest generyczny, a pluginy implementują selektywne tematy branżowe. Web na jetty/tomcacie, ale nie spring ;-P

Nie mam problemu JAK pluginowi przekazać "main"-a, ale mnie zaciekawiło jak to zrobić maksymalnie elegancko.
Wstrzykiwanie A.D2022 są już beee, singletony beee ...


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
edytowany 2x, ostatnio: ZrobieDobrze
W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:15 minut
  • Postów:3614
0

Singletony nie są "beeee". Natomiast główne pytanie - to co robisz.

Moim ulubionym sposobem chyba jest po prostu dorzucenie na start jakiejś metody myApp.configure() zawierającej listę modułów w stylu this.registerPlugin(new MyPlugin()). Nic nie stoi na przeszkodzie, żeby istniał jakiś tam rejestr statyczny tych modułów - o ile pokrywa się on z tym, co chcesz zrobić.

VD
  • Rejestracja:ponad 10 lat
  • Ostatnio:10 miesięcy
  • Postów:72
0

Może MyPlugin powinien mieć metodę onInit i main uruchamiałby ją przekazując odpowiedni kontekst?

KamilAdam
A nie lepiej postConstructor XD
VD
Jak chcesz mieć w pluginach zależność do springa to pewnie git :)
KamilAdam
Oj tam zależności, metodę bym tak nazwał bo mi się dobrze kojarzy
damianem
  • Rejestracja:prawie 8 lat
  • Ostatnio:4 miesiące
  • Postów:205
0

Zakładałbym, że jeśli to mają być pluginy, to musi być jakiś plugin manager, który będzie zarządzał lifecycle pluginów. Wtedy interface MyPlugin dostaje metody start() i stop(), gdzie start może służyć jako pluginowy "main" (być może jakiś kontekst możesz tam przekazać jako parametr metody aby plugin mógł sam siebie zainicjalizować).

Jeśli pracujesz w jednym classloaderze to możesz wykorzystać Java Service SPI do załadowania pluginów na starcie aplikacji.

Pytanie jak dużo możesz zmienić a jak duża część jest "zakładowa" i mało zmienialna :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.