首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Spring MVC 4 純註解配置零 XML 實戰指南

     編輯:Java 相關知識

傳統 Spring 專案充斥著 web.xml、applicationContext.xml、spring-mvc.xml 等 XML 配置,不僅繁瑣且易出錯。Spring 3+ 引入的 Java Config 機制,配合 Servlet 3.0 WebApplicationInitializer,可實現**完全零 XML** 的純註解配置。本文從 Maven 專案建立到核心配置類編寫,完整演示如何拋棄所有 XML。

Maven 專案設置

  • Packaging: war
  • 標準 Maven WebApp 目錄結構
  • Spring 版本統一管理:<spring.version>4.0.1.RELEASE</spring.version>

核心依賴:spring-webmvc、spring-jdbc、spring-orm、spring-tx、c3p0、mysql-connector-java、javax.servlet-api (provided)、jstl、jackson 等。

核心配置類:Config.java —— 替代所有 Bean XML

@Configuration
@ComponentScan("com.csonezp")
@EnableWebMvc
public class Config {
    // 視圖解析器
    @Bean
    public UrlBasedViewResolver setupViewResolver() {
        UrlBasedViewResolver resolver = new UrlBasedViewResolver();
        resolver.setPrefix("/WEB-INF/");
        resolver.setSuffix(".jsp");
        resolver.setViewClass(JstlView.class);
        return resolver;
    }

    // 數據源
    @Bean(name = "dataSource")
    public ComboPooledDataSource getDataSource() {
        try {
            ComboPooledDataSource ds = new ComboPooledDataSource();
            ds.setJdbcUrl("jdbc:mysql://localhost:3306/mfdb");
            ds.setDriverClass("com.mysql.jdbc.Driver");
            ds.setUser("root");
            ds.setPassword("zp1228");
            ds.setMaxPoolSize(75);
            return ds;
        } catch (Exception e) { return null; }
    }
}

註解說明:

  • @Configuration:聲明此類為配置類,等同於 <beans>
  • @ComponentScan:掃描組件包,替代 <context:component-scan>
  • @EnableWebMvc:啟用 Spring MVC 默認配置,替代 <mvc:annotation-driven>
  • @Bean 方法:回傳對象自動註冊為 Bean,方法名即 Bean ID

Web 初始化器:WebInitializer.java —— 替代 web.xml

public class WebInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(Config.class);           // 註冊配置類
        ctx.setServletContext(servletContext);

        Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
        servlet.addMapping("/");              // 攔截所有請求
        servlet.setLoadOnStartup(1);          // 啟動時加載
    }
}

實現 WebApplicationInitializer 介面,Servlet 容器啟動時自動調用 onStartup,完成 DispatcherServlet 註冊與映射,徹底取代 web.xml。

業務代碼示例

注入配置類中定義的 Bean

 getMoviePlayInc(int movieId) {
        return jdbcTemplate.query("SELECT * FROM movieplayincreament WHERE movieid=?", 
            new MoviePlayIncMapper(), movieId);
    }
}

驗證結果

啟動 Tomcat,訪問 https://localhost:8080/dp/test/hello?name=sss,頁面顯示 sss, Hello!,證明純註解配置生效。

優勢總結

傳統 XML純註解 Java Config
多文件分散,修改需重新部署集中在 Java 類,IDE 重構、跳轉、編譯檢查全支援
無類型安全,拼寫錯誤運行時才發現編譯期類型檢查,重構安全
配置與代碼割裂配置即代碼,邏輯內聚

此模式為 Spring Boot 後續自動配置奠定基礎,掌握它能更深入理解 Spring 容器啟動本質。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved