Tworzenie aplikacji opartej o wtyczki za pomocą Springa

Koziołek

budowa.gif

Strona w budowie
Ktoś pracuje nad tą stroną, jej zawartość może się wkrótce zmienić. Prosimy o cierpliwość!

1 Wstęp
2 Projekt
     2.1 Jaki jest cel stworzenia aplikacji?
     2.2 Podział na moduły
          2.2.1 Moduł główny
          2.2.2 API pluginów
          2.2.3 Przykładowy Plugin
     2.3 Zależności pomiędzy modułami
3 Przygotowania do kodowania
     3.4 Stworzenie projektu za pomocą Mavena2
     3.5 Konfiguracja zależności
     3.6 Konfiguracja modułów
     3.7 Integracja z Eclipse IDE
4 Aplikacja główna
     4.8 Kontekst Aplikacji
     4.9 Wartości domyślne parametrów
          4.9.4 Dygresja - Blok statyczny i kolejność wykonania
5 Zarządzanie pluginami - interfejs PluginManager
     5.10 Kontekst pluginów do czego służy?
     5.11 Konfiguracja i application.xml
     5.12 Ładowanie pluginów
     5.13 Konfigurowanie pluginów
     5.14 Usuwanie pluginów
     5.15 PluginManagerImpl przykładowa implementacja
6 Wtyczka - interfejs Plugin
     6.16 Co plugin powinien mieć?
     6.17 Konfiguracja - konstruktor czy metody ustawiające?
     6.18 Inicjacja pluginu - metoda init()
     6.19 Czy plugin powinien działać w wątku?
     6.20 Odwołanie do aplikacji
7 Implementacja interfejsu Plugin
     7.21 Tworzenie projektu za pomocą maven2
     7.22 Konfiguracja zależności
     7.23 Implementacja pluginu
     7.24 Plugin dodaje się do aplikacji
8 Testowanie z Maven2 i JUnit
     8.25 Pisanie testów JUnit
     8.26 Testowanie w trakcie budowania
9 Przygotowanie dystrybucji
     9.27 Zmiany w pom.xml
     9.28 Tworzenie jara

Wstęp

W świecie oprogramowania elastyczność jest cnotą. Współczesne programy oferują wiele możliwości oraz funkcji. Rozwój oprogramowania i wzrost jego złożoności wymusił na programistach opracowanie pewnego mechanizmu, który pozwalał by na łatwe i zunifikowane dodawanie kolejnych elementów do końcowego produktu. Z tej potrzeby narodziła się idea wtyczek, czyli pluginów. W tym artykule przedstawię jedną z metod tworzenia programu opartego o wtyczki. W tym celu wykorzystam Spring Framework oraz narzędzie Maven2. Zakładam, że masz już zainstalowanego Mavena. Jeżeli nie, zapoznaj się najpierw z tym artykułem.

Projekt

Jak każde dobre przedsięwzięcie informatyczne rozpoczniemy naszą pracę od stworzenia projektu. Projekt ułatwia ustalenie wymagań oraz zapewnia uporządkowanie pomysłów. Jest też dobrym "notatnikiem" w którym można określić przyszłe rozwiązania (features). Projekt składa się z kilku podstawowych elementów:

  • Określenia celu
  • Opisu wymagań
  • Opisu sposobu realizacji wymagań.

Jaki jest cel stworzenia aplikacji?

Celem projektu jest stworzenie aplikacji - kalkulatora opartej o mechanizm wtyczek (pluginów). Każda z operacji matematycznych udostępnionych przez aplikację powinna być oddzielnym modułem.

Podział na moduły

Moduł główny

API pluginów

Przykładowy Plugin

Zależności pomiędzy modułami

Przygotowania do kodowania

Stworzenie projektu za pomocą Mavena2

Konfiguracja zależności

Konfiguracja modułów

Integracja z Eclipse IDE

Aplikacja główna

Kontekst Aplikacji

Wartości domyślne parametrów

Dygresja - Blok statyczny i kolejność wykonania

Zarządzanie pluginami - interfejs PluginManager

Kontekst pluginów do czego służy?

Konfiguracja i application.xml

Ładowanie pluginów

Konfigurowanie pluginów

Usuwanie pluginów

PluginManagerImpl przykładowa implementacja

Wtyczka - interfejs Plugin

Co plugin powinien mieć?

Konfiguracja - konstruktor czy metody ustawiające?

Inicjacja pluginu - metoda init()

Czy plugin powinien działać w wątku?

Odwołanie do aplikacji

Implementacja interfejsu Plugin

Tworzenie projektu za pomocą maven2

Konfiguracja zależności

Implementacja pluginu

Plugin dodaje się do aplikacji

Testowanie z Maven2 i JUnit

Pisanie testów JUnit

Testowanie w trakcie budowania

Przygotowanie dystrybucji

Zmiany w pom.xml

Tworzenie jara

User:Koziołek

2 komentarzy

To jest tak zwany STUB względnie MockObject. Na razie nie ma szans na kontynuację. Niestety nie mam czasu, a chętnych nie ma.

Czy ktoś w ogóle ma zamiar to kontynuowac?