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

Spring + Spring MVC + MyBatis + React + Reflux + Webpack 全棧項目實戰:從零構建現代化 Java Web 應用

     編輯:Java 綜合教學

全棧分離架構實戰:Spring 全家桶後端 + React/Reflux/Webpack 前端,Maven 多模組構建,ES6 開發體驗

傳統 Java Web 開發模式 (JSP + Controller) 已難以應對複雜交互需求。本文展示一個生產級參考項目:**後端 Spring + Spring MVC + MyBatis 提供 REST API,前端 React + Reflux + Webpack 構建 SPA**,雙端通過 JSON 交互,Maven 統一構建,開箱即用。

專案整體架構


webbf/
├─ src/main/java/           # 後端源碼
│  ├─ config/               # Spring/MyBatis/MVC 配置類
│  ├─ controller/           # REST Controller
│  ├─ service/              # 業務邏輯
│  ├─ dao/                  # MyBatis Mapper
│  └─ entity/               # 實體類
├─ src/main/resources/      # 配置文件
│  ├─ applicationContext.xml
│  ├─ spring-mvc.xml
│  ├─ mybatis-config.xml
│  └─ mapper/*.xml
├─ src/main/webapp/         # 前端源碼 (Webpack 入口)
│  ├─ src/
│  │  ├─ components/        # React 組件
│  │  ├─ actions/           # Reflux Actions
│  │  ├─ stores/            # Reflux Stores
│  │  ├─ utils/             # 工具函數
│  │  └─ app.js             # 入口
│  ├─ index.html
│  └─ package.json          # 前端依賴
├─ pom.xml                  # Maven 總配置
└─ target/                  # 構建輸出

後端技術棧與核心配置

  • Spring 4.x:IoC、AOP、事務管理 (@Transactional)
  • Spring MVC:@RestController 直接返回 JSON,無視圖解析器
  • MyBatis 3.x:Mapper 接口 + XML SQL、分頁插件 (PageHelper)
  • Servlet 轉發器:專用 ForwardServlet 將所有 /** 轉發到 index.html,支援前端路由刷新
  • 配置亮點:web.xml 僅配 DispatcherServlet + ForwardServlet + 編碼過濾器,其餘全 JavaConfig

前端技術棧與工作流

技術版本角色關鍵配置
React15.xUI 組件庫,虛擬 DOM、單向數據流ES6 Class 組件、PropTypes 類型檢查
Reflux0.4.xFlux 實現,Action → Store → View 單向流Store 監聽 Action,組件監聽 Store
Webpack2.x模塊打包器,支援 JSX/ES6/CSS/圖片babel-loader、css-loader、dev-server 熱更新
ES6-模塊化、箭頭函數、解構、Promise.babelrc: preset-es2015, preset-react
jQuery/Bootstrap/ECharts最新輔助庫,通過 npm 安裝 import $ from 'jquery'Webpack ProvidePlugin 自動注入 $

前端構建與運行命令


# 1. 進入前端目錄
cd src/main/webapp

# 2. 安裝依賴 (讀取 package.json)
npm install

# 3. 開發模式:熱更新 + Source Map
npm run dev   # 相當於 webpack-dev-server --inline --hot

# 4. 生產構建:壓縮、Hash、分包
npm run build # 相當於 webpack --display-error-details -p

核心前端架構:Reflux 數據流


// actions/UserActions.js
export default Reflux.createActions([
  'loadUsers',      // 異步加載
  'loadUsersCompleted', // 完成
  'loadUsersFailed',    // 失敗
  'addUser'         // 新增
]);

// stores/UserStore.js
import UserActions from '../actions/UserActions';
export default Reflux.createStore({
  listenables: UserActions,
  init() { this.users = []; },
  
  onLoadUsers() {
    // 觸發異步請求
    fetch('/api/users')
      .then(res => res.json())
      .then(data => this.users = data)
      .then(() => this.trigger(this.users)) // 通知組件更新
      .catch(err => UserActions.loadUsersFailed(err));
  },
  
  onAddUser(user) {
    fetch('/api/users', {method:'POST', body:JSON.stringify(user)})
      .then(() => UserActions.loadUsers()); // 重新加載
  }
});

// components/UserList.jsx
import UserStore from '../stores/UserStore';
class UserList extends React.Component {
  constructor(props) {
    super(props);
    this.state = { users: [] };
  }
  componentDidMount() {
    this.unsubscribe = UserStore.listen(users => this.setState({ users }));
    UserActions.loadUsers();
  }
  componentWillUnmount() { this.unsubscribe(); }
  render() {
    return {this.state.users.map(u => )}
{u.name}
; } }

React 核心思想速覽

  • 虛擬 DOM:JS 對象模擬真實 DOM,state 變化觸發 render(),Diff 算法計算最小更新集,批量寫入真實 DOM
  • 組件復用:class X extends React.Component,Props 輸入、State 內部、生命週期鉤子
  • 單向數據流:Reflux 將 Flux 簡化為 Action → Store → View,避免雙向綁定混亂

運行效果展示

運行效果截圖

Flux 數據流圖解

源碼地址與啟動指南

GitHub:https://github.com/peterchenhdu/webbf

  1. 後端:導入 IDEA → Maven Reimport → 配置 Tomcat → 運行 ForwardServlet 啟動類
  2. 前端:cd src/main/webapp && npm install && npm run dev
  3. 訪問 https://localhost:8080/ 即可看到 React SPA

遷移建議:現代化技術棧升級路徑

原技術建議升級理由
Spring 4.x XML 配置Spring Boot 2.x/3.x + JavaConfig自動配置、啟動快、生態豐富
MyBatis XMLMyBatis-Plus / MyBatis Dynamic SQL減少樣板代碼、類型安全
React 15 Class 組件React 18 + Hooks (Function Component)邏輯復用更強、包體積更小
RefluxRedux Toolkit / Zustand / JotaiReflux 停止維護,Redux 生態主流
Webpack 2Webpack 5 / Vite構建速度快數倍、配置更簡單
Maven 多模組Gradle / Maven 保留Gradle 腳本更靈活、增量構建快

這個項目雖然技術棧略顯「上一代」,但完整展示了 **前後端分離、REST API、單向數據流、模塊化構建** 的工程化落地全過程。克隆下來跑通,再按遷移表逐項升級,是理解現代 Java 全棧演進最低成本的路徑。

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