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

Maven 專案建構與 SSM 框架整合完整教學

     編輯:Java 綜合教學

Maven 專案建構與 SSM 框架整合完整教學

本文記錄從 Maven 環境配置到 SSM (Spring + SpringMVC + MyBatis) 整合的完整流程,針對 Eclipse 常見坑點提供解決方案,助你快速搭建企業級 Java Web 專案骨架。

一、Maven 核心配置

1. 安裝與環境變數

  • 下載 Apache Maven 二進制包,解壓至無中文、無空格路徑 (如 D:\dev\maven)
  • 配置 MAVEN_HOME 環境變數,Path 新增 %MAVEN_HOME%\bin
  • 驗證:cmd 執行 mvn -version 顯示版本資訊即成功

2. settings.xml 關鍵配置

<settings>
  <localRepository>D:/dev/maven_repo</localRepository>  <!-- 本地倉庫路徑 -->
  <mirrors>
    <mirror>
      <id>aliyun</id>
      <name>Aliyun Maven</name>
      <url>https://maven.aliyun.com/repository/public</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <id>jdk-1.8</id>
      <activation><activeByDefault>true</activeByDefault></activation>
      <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    </profile>
  </profiles>
</settings>

二、Eclipse 整合 Maven 避坑指南

1. Eclipse 偏好設定

  • Window → Preferences → Maven → Installations:新增外部 Maven 路徑
  • User Settings:指定上述 settings.xml
  • 勾選 "Download Artifact Sources" 與 "Download Javadoc"

2. 建立 Maven Web 專案常見錯誤與修復

現象原因解決方案
專案結構缺少 src/main/java 等目錄原型建立失敗手動建立標準目錄結構,右鍵專案 → Build Path → Use as Source Folder
pom.xml 報錯:web.xml 缺失Dynamic Web Module 3.0+ 支援無 web.xml右鍵專案 → Properties → Project Facets → 勾選 Dynamic Web Module 3.1,或在 web.xml 中設定 metadata-complete="false"
JRE 版本不匹配專案預設 JRE 為 1.5Properties → Java Build Path → Libraries 移除 JRE System Library,重新加入 JDK 1.8;同時修改 .settings/org.eclipse.wst.common.project.facet.core.xml 中版本號
Maven Dependencies 未生效Eclipse 快取問題右鍵專案 → Maven → Update Project → 勾選 Force Update

三、SSM 整合核心配置

1. 父子模組 pom.xml 依賴管理

<!-- 父模組 dependencyManagement -->
<properties>
  <spring.version>5.3.21</spring.version>
  <mybatis.version>2.2.2</mybatis.version>
  <mybatis-spring.version>2.0.7</mybatis-spring.version>
</properties>

<dependencyManagement>
  <dependencies>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency>
    <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency>
    <dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>${mybatis-spring.version}</version></dependency>
    <!-- 資料庫驅動、連線池、日誌等 -->
  </dependencies>
</dependencyManagement>

2. Spring 核心配置 (applicationContext.xml)

<!-- 掃描 Service、DAO、Component -->
<context:component-scan base-package="com.example">
  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

<!-- 資料源 + 事務管理 -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">...</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource"/>
  <property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="basePackage" value="com.example.mapper"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource"/>
</bean>

3. SpringMVC 配置 (spring-mvc.xml)

<mvc:annotation-driven/>
<context:component-scan base-package="com.example.controller"/>

<!-- 靜態資源處理 -->
<mvc:resources mapping="/static/**" location="/static/"/>
<mvc:default-servlet-handler/>

<!-- 視圖解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/WEB-INF/views/"/>
  <property name="suffix" value=".jsp"/>
</bean>

<!-- 檔案上傳 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <property name="maxUploadSize" value="10485760"/>
</bean>

4. web.xml 入口配置

<web-app xmlns="https://xmlns.jcp.org/xml/ns/javaee" version="3.1">
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
  
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  
  <filter> <!-- 字元編碼過濾器 --> </filter>
  <filter-mapping>...</filter-mapping>
</web-app>

四、驗證整合與常見問題

  1. 建立測試 Controller、Service、Mapper、XML、JSP 頁面
  2. 啟動 Tomcat,訪問測試路徑
  3. 常見錯誤排查:
    • 404:檢查 url-pattern、Controller 映射路徑、視圖解析器前綴
    • Mapper 掃描失敗:確認 MapperScannerConfigurer basePackage、XML 命名空間
    • 事務不生效:檢查 @Transactional 所在類是否被掃描、是否為 public 方法、資料源是否正確注入

五、進階建議

  • 採用 Spring Boot 2.7+ / 3.x 簡化配置,內嵌容器、自動配置、Starter 依賴大幅降低整合成本
  • 使用 Maven 多模組架構:common、dao、service、web 分離,便於微服務拆分
  • 引入 Lombok、MapStruct 減少樣板碼
  • 整合 Druid/HikariCP 監控 SQL 效能,配置 MyBatis 二級快取
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved