Wpis z mikrobloga

#spring #java #programowanie

Nie mogę zrozumieć konfiguracji Spring MVC. Niby mogę skopiować gotowca, ale zawsze mam z tym problem, że nie wiem w którym pliku co robić. Jak czytam w książkach/tutorialach, to w każdym jest inaczej i już się gubię ( ͡° ʖ̯ ͡°)

Od razu zaznaczam, że nie chcę korzystać ze Spring Boot (na którym opierają się tutoriale ze spring.io). Konfigurację chcę w XML, a nie JavaConfig (tak, wiem, że lepsze i nowsze).

Mam plik /WEB-INF/web.xml. Jest on automatycznie wczytywany.

Robię serwlet frontowy DispatcherServlet:


spring
org.springframework.web.servlet.DispatcherServlet
1

I on niby ma wczytać "kontekst" aplikacji.
W niektórych miejscach piszą, że wczytuje [nazwa]-context.xml (czyli u mnie spring-context.xml) a w innych, że [nazwa]-servlet.xml (czyli u mnie spring-servlet.xml). Czym to się różni? To w końcu, który plik mam zrobić?

To w takim razie po co to? Po co mi drugi kontekst?


contextConfigLocation
/WEB-INF/root-context.xml

Gdzie mam wstawiać beany Springowe? Ten który wczytał DispatcherServlet czy ten który jest zdefiniowany w contextConfigLocation?

Czemu we wszystkich książkach jest rozdzielone to na dwa pliki XML (w całej książce "Spring w akcji" jest plik root-context.xml, który ANI RAZU nie jest wykorzystywany - to po co on)?

A np. tu jest tylko jeden plik (applicationContext.xml). Mogę też tak zrobić czy w czymś mi przeszkadza?
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Legol: no tak, nazwa nie ma znaczenia (bo może być na podstawie nazwy serwletu albo mogę zdefiniować sam). Czyli drugą częścią nazwy musi być -context? To to te pliki z częścią -servlet.xml po co są?

Ale czym się różnią pliki w contextConfigLocation od tych, które wczytuje DispatcherServlet?

Czegoś nie mogę w którymś wpisywać (np. własnych beanów)? Który jest obowiązkowy? Bo jak się nie różnią, to wywaliłbym
  • Odpowiedz
@mk321: contextConfigLocation jako context-param - root context aplikacji - domyślnie chyba applicationContext.xml
jako init-param servletu - child context dotyczący mvc - domyślnie chyba [servlet-name]-servlet.xml
Tteoretycznie powinno być tak, że beany dotyczące tylko mvc powinny być w odpowiednim kontekście potomnym - kontrolery itp, a takie rzeczy jak np dostęp do DB, beany współdzielone przez inne konteksty - w root-context

Możesz wszystko wrzucić w rootContext jak bardzo chcesz :)

Tu jest całkiem
  • Odpowiedz