interfejs a implementacja w WS

0

Pytanie mam odnośnie interfejsów oraz ich implementacji.
Dajmy na to Spring 4 żeby mieć controller mozemy sobie po prostu stworzyć klase dodać adnotację, dalej deklaracje metod itd. Bez tworzenia dla tego controllera interfejsu specjalnie.
Wiem, że keidy bodajze spring 2, trzeba było tworzyć specjalnie interfejs a później go implementować w naszym controllerze.
Czemu miał służyć taki podział i dlaczego aktualnie moża robić to samo bez wydzielanai interfejsu.
Jedyny przypadek jaki mi teraz przychodzi do głowy aby w spring 4 wydzielić interfejs restowy to gdy chce wystawic API.

2

Bo od javy 1.5 mamy coś takiego jak adnotacje i stąd też można robić pewne rzeczy bez potrzeby implementowania śmiesznych interfejsów. Wynika to z faktu, że można łatwo "znaleźć" klasy z dana adnotacją / implementujące dany interfejs. Kiedy nie było adnotacji to JAKOŚ trzeba było oznaczyć ze coś jest kontrolerem czy serwisem ;]

Niemniej z interfejsami jeszcze w Springu 3 była inna kwestia - dynamiczne proxy AOP. Jak dajesz gdzieś adnotacje w stylu "@Transactional'' to w rzeczywistości Spring tworzy proxy dla tej twojej klasy, dodaje tam around advice z AOP, takie że przed każdą metodą otwiera transakcje a po metodzie zamyka i commituje. Stworzenie takiego proxy jest proste jeśli twoja klasa implementuje jakis interfejs i przez ten interfejs wstrzykujesz, bo wtedy Spring po prostu tworzy w runtime nową klasę (to aop proxy) implementującą ten interfejs. Gorzej jeśli nie masz tam interfejsu tylko zwykłą klasę, bo wtedy Spring musiałby dziedziczyć z tej klasy żeby zrobić proxy. A jak klasa jest final to już w ogóle słabo. Można było takie cos umożliwić stosując cgliba i odpowiednią konfiguracje. Teraz Spring 4 ma to juz zintegrowane, tzn sam sobie dobierze metodę do tworzenia proxy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1