Wpis filozoficzny…

Ostatnio(czytaj gdzieś w tym kwartale) zostałem zapytany czy integracja Spring MVC z Vaadin ma sens. Odpowiedź w skrócie brzmi… to zależy.

Na Nie

Po pierwsze jeżeli przyjrzymy się temu co kryje się za pojęciem Spring MVC to odkryjemy, że tak na prawdę jest to Spring Web MVC z bardzo silnym naciskiem na Web. Vaadin nie jest typowym frameworkiem webowym i dlatego nie można stosować springowych rozwiązań wprost. Oczywiście da się, ale będzie to niezgrabna proteza, która pozbawi nas zalet zarówno Springa jak i Vaadin.
Lepszym rozwiązaniem jest samodzielna implementacja ViewResolvera, ale powiedzmy sobie szczerze to jest bardzo trudne. Trudność polega na niewebowym sposobie „myślenia” związanym z Vaadin. Znacznie lepszym jest sposób myślenia taki jaki mamy w przypadku aplikacji Swing/AWT/SWT. Zresztą powiedzmy sobie szczerze, Vaadin ma bliżej do Swinga niż do JSP/JSF/Inna technologia webowa. Dlatego też w przypadku Vaadin nie należy używać Springowego MVC wprost.

Na Tak

Używanie wzorca MVC jest bardzo, ale to bardzo dobrym pomysłem. Jest to jeden z tych wzorców, który powinien być stosowany wszędzie tam, gdzie aplikacja obsługuje więcej niż trzy scenariusze. Implementowany powinien być już na początku, a następnie schemat powinien być konsekwentnie powtarzany w całej aplikacji.
Problemem jest wymieszanie warstwy kontrolera i widoku właściwe dla aplikacji okienkowych. Dlatego też należy użyć Springa jako narzędzia do separacji widoku i kontrolerów. No właśnie… nie kontrolerów, a prezenterów. Tu dochodzimy do ważnego stwierdzenia. Zamiast wzorca MVC należy używać wzorca MVP, a Spring powinien służyć do wiązania widoków domeny i prezenterów domeny.
Jak dokładnie to zrobić będzie innym razem.

Podsumowanie

Spring tak, MVC nie. Po prostu wzorzec ten w przypadku aplikacji w Vaadin nie będzie spełniał swojej roli. Lepszym rozwiązaniem jest wzorzec MVP, który jest pewną mutacją MVC przystosowaną do środowiska okienkowego.