Sobes.tech
Junior

Čo je potrebné na to, aby Spring MVC fungovalo?

sobes.tech AI

Odpoveď od AI

Na spustenie Spring MVC sú potrebné:

  1. Webový server: Servlet kontajner, ako je Apache Tomcat, Jetty alebo Undertow, na nasadenie webovej aplikácie.
  2. Konfigurácia Spring:
    • XML konfigurácia alebo Java konfigurácia (s použitím anotácií), ktorá definuje komponenty Spring (kontroléry, služby, repository a pod.) a ich vzťahy.
    • Konfigurácia DispatcherServlet v súbore web.xml alebo pomocou Java konfigurácie (AbstractAnnotationConfigDispatcherServletInitializer). DispatcherServlet je front-ovládací kontrolér Spring MVC, ktorý deleguje spracovanie požiadaviek príslušným handlerom.
  3. Závislosti Maven/Gradle: Zahrnutie potrebných závislostí do súboru build (napríklad pom.xml alebo build.gradle):
    • spring-webmvc: Hlavná závislosť pre Spring MVC.
    • Závislosti pre zobrazenia (Thymeleaf, JSP, FreeMarker a pod.) pri použití šablónovačov.
    • Závislosti pre validáciu (napríklad Hibernate Validator).
    • Závislosti pre spracovanie JSON/XML (napríklad Jackson alebo JAXB).
  4. Kontroléry: Triedy s anotáciami @Controller alebo @RestController, obsahujúce metódy označené anotáciami @RequestMapping, @GetMapping, @PostMapping a pod., na spracovanie prichádzajúcich HTTP požiadaviek.

Príklad minimálnej Java konfigurácie:

// WebMvcConfig.java
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class WebMvcConfig implements WebMvcConfigurer {
    // Ďalšia konfigurácia, ak je potrebná (napríklad nastavenie ViewResolver)
}

Príklad nastavenia DispatcherServlet pomocou Java konfigurácie:

// AppInitializer.java
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null; // Žiadne koreňové kontexty
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[]{WebMvcConfig.class}; // Konfigurácia Spring MVC
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"}; // Mapovanie DisptacherServlet na koreňový URL
    }
}

Príklad jednoduchého kontroléra:

// HelloController.java
@Controller
public class HelloController {

    @GetMapping("/hello")
    public String hello(@RequestParam(name = "name", required = false, defaultValue = "World") String name, Model model) {
        model.addAttribute("name", name);
        return "hello"; // Názov pohľadu (napríklad hello.jsp alebo hello.html)
    }
}

Na záver, Spring MVC sa spúšťa nasadením webovej aplikácie (JAR alebo WAR), ktorá obsahuje všetky potrebné komponenty a konfiguráciu na webovom serveri. DispatcherServlet sa inicializuje pri štarte a začína spracovávať prichádzajúce webové požiadavky, smerujúc ich na príslušné kontroléry na základe mapovaní.