前端學習之后端小白java的一些理論知識(框架)

一、Spring Framework 和 Spring boot的區別

  1. 核心定位
  • Spring Framework:一個全面的Java應用開發框架,提供核心功能如IoC容器、AOP等
  • Spring Boot:Spring Framework的擴展,專注于簡化Spring應用的初始搭建和開發過程
  1. 配置方式
  • Spring Framework:需要大量XML配置或Java注解配置
  • Spring Boot:采用"約定優于配置",自動配置大部分組件,極少配置即可運行
  1. 應用部署
  • Spring Framework:通常需要外部應用服務器(如Tomcat、Jetty)
  • Spring Boot:內嵌應用服務器,可直接生成獨立可執行的JAR文件
  1. 開發速度
  • Spring Framework:搭建項目需要手動配置各種依賴和設置
  • Spring Boot:使用starter依賴和自動配置,快速啟動項目
  1. 依賴管理
  • Spring Framework:需要手動管理依賴版本兼容性
  • Spring Boot:提供依賴管理,自動處理依賴版本兼容問題
  1. 監控和管理
  • Spring Framework:需要額外配置監控工具
  • Spring Boot:內置Actuator提供監控和管理功能
  1. 使用場景
  • Spring Framework:適合需要精細控制每個組件的大型復雜項目
  • Spring Boot:適合快速開發、微服務架構和云原生應用
  1. 適用場景
  • Spring Boot更適合:
    快速開發和原型設計
    微服務架構
    云原生應用
    初學者和中小型項目
    需要快速部署的場景
  • Spring Framework更適合:
    需要精細控制框架配置的大型項目
    對系統資源要求嚴格的場景
    需要與遺留系統深度集成的項目
    特殊的定制化需求

本質上,Spring Boot是在Spring Framework基礎上的一層封裝,簡化了開發流程,讓開發者可以更專注于業務邏輯而非框架配置。

總體而言,Spring Boot是Spring Framework的進化版,簡化了開發流程,但兩者并非替代關系。Spring Boot構建在Spring Framework之上,根據項目需求和團隊經驗選擇合適的方案更為重要。

二、java 有哪些框架

  1. Web開發框架
    Spring Framework:最流行的企業級開發框架
    Spring Boot:簡化Spring開發的快速啟動框架
    Spring MVC:基于MVC的Web框架
    Struts2:老牌MVC框架
    JSF:JavaServer Faces,組件化UI框架
    Play Framework:輕量級、響應式Web框架
    Micronaut:云原生微服務框架
    Quarkus:為GraalVM和HotSpot優化的框架
  2. ORM框架
    Hibernate:最流行的JPA實現
    MyBatis:輕量級SQL映射框架
    JPA:Java持久化API標準
    EclipseLink:JPA參考實現
    jOOQ:類型安全的SQL構建框架
  3. 微服務框架
    Spring Cloud:微服務生態系統
    Dubbo:阿里巴巴RPC框架
    gRPC:Google的高性能RPC框架
    Helidon:Oracle的微服務框架
    Vert.x:響應式微服務工具包
  4. 安全框架
    Spring Security:認證和授權框架
    Apache Shiro:輕量級安全框架
    Keycloak:身份和訪問管理解決方案
    JAAS:Java認證和授權服務
  5. 測試框架
    JUnit:單元測試框架
    TestNG:測試框架,JUnit替代品
    Mockito:模擬測試框架
    PowerMock:擴展其他模擬框架
    Selenium:Web應用自動化測試
  6. 日志框架
    Log4j/Log4j2:Apache日志框架
    Logback:Log4j的后繼者
    SLF4J:簡單日志門面
    Commons Logging:Apache通用日志接口
  7. 工具框架
    Apache Commons:通用工具庫
    Guava:Google核心庫
    Lombok:減少樣板代碼
    Jackson/Gson:JSON處理庫
    Netty:異步網絡應用框架
  8. 大數據框架
    Hadoop:分布式存儲和處理
    Spark:大規模數據處理引擎
    Flink:流處理和批處理框架
    Storm:實時計算系統

企業開發中,Spring生態系統(Spring Framework、Spring Boot、Spring Cloud)是最主流的選擇,結合MyBatis/Hibernate等ORM框架構成大多數Java企業應用的技術棧。

三、推薦開發順序:自底向上

  1. 數據庫表結構 (如果需要新增字段)

  2. Mapper 層

  3. Manager 層

  4. Service 層

  5. Controller 層

  6. 響應對象

    Controller層:處理HTTP請求
    Service層:業務邏輯處理
    Mapper層:數據訪問層(MyBatis)
    Configs:配置類
    通俗案例

    1. **數據庫層**:需要修改 TestFeatureDO 和相關的 Mapper
    2. **中間對象層**:需要修改 TestFeatureExtendInfo
    3. **響應對象層**:需要修改 TestFeatureGetResponse
    4. **數據庫查詢**:需要修改 TestFeatureServiceImpl 中的查詢邏輯
    5. **響應轉換**:需要修改 convertExtentInfoToResponse 方法
    

    優點:
    ? 確保數據可獲取性
    ? 每層都有扎實的基礎
    ? 便于單元測試
    ? 減少返工風險
    這種自底向上的方式特別適合數據驅動的功能開發,能夠確保整個鏈路的數據流轉是可靠的。

四、每個層的具體職責

  1. 數據庫層(直接映射數據庫表)
      // TestFeatureDO.java - 數據對象public class TestFeatureDO extends BasicFeatureTypeDO {private String modelId;           // 對應數據庫 model_id 字段private String modelVersionId;    // 對應數據庫 model_version_id 字段  private String englishName;       // 對應數據庫 english_name 字段// ... 其他數據庫字段}
    
    職責:
    🎯 一對一映射:每個屬性直接對應數據庫表的一個字段
    🎯 數據持久化:負責數據的增刪改查操作
    🎯 類型轉換:處理數據庫類型到 Java 類型的轉換
  2. 中間對象層(業務處理中的擴展信息對象/業務邏輯處理和數據組裝)
     // TestFeatureExtendInfo.java - 業務擴展對象
    public class TestFeatureExtendInfo extends FeatureExtendInfo {private String modelId;                    // 來自 TestFeatureDOprivate Map<String, Object> modelArgToFeatureNameMap; // 業務處理后的復雜對象private List<FeatureSubjectDO> subjectList;    // 關聯查詢的其他數據private List<FeatureBusinessDO> businessList;  // 關聯查詢的其他數據// ... 更多業務相關字段
    }
    
    職責:
    🎯 數據聚合:將多個 DO 對象的數據組合在一起
    🎯 業務邏輯:處理復雜的業務規則和計算
    🎯 關聯查詢:整合來自不同表的相關數據
  3. 響應對象層(返回給前端的響應對象)
    // TestFeatureGetResponse.java - 響應對象
    public class TestFeatureGetResponse extends FeatureGetResponse {private String modelId;                    // 前端需要的字段private Long createTime;                   // 轉換為時間戳格式private BasicUserInfo creator;             // 封裝用戶信息對象// 只包含前端需要的字段,隱藏內部實現細節
    }
    
    職責:
    🎯 API 契約:定義前端能獲取到的數據結構
    🎯 格式轉換:將內部數據格式轉換為前端友好的格式
    🎯 數據過濾:只暴露前端需要的字段,隱藏敏感信息
  4. 數據庫查詢(在Service層進行數據獲取/數據獲取和初步組裝)
     // ModelFeatureServiceImpl.get() 方法@Overridepublic TestFeatureGetResponse get(Long featureId, Long versionId, ...) {// 🔍 查詢基礎特征信息FeatureDO featureDO = featureManager.getById(featureId);// 🔍 查詢模型特征版本信息TestFeatureDO modelFeatureDO = TestFeatureManager.getById(versionId);// ... 組裝業務對象}
    
    職責:
    🎯 數據獲取:從多個數據源獲取原始數據
    🎯 關聯查詢:處理表之間的關系查詢
    🎯 數據驗證:確保數據的完整性和有效性
  5. 響應轉換(將中間對象轉換為響應對象/業務對象到響應對象的轉換)
    // convertExtentInfoToResponse() 方法
    public TestFeatureGetResponse convertExtentInfoToResponse(TestFeatureExtendInfo extendInfo) {TestFeatureGetResponse response = new ModelFeatureGetResponse();// 🔍 字段映射response.setModelId(extendInfo.getModelId());response.setVersionId(extendInfo.getFeatureTypeId());// 🔍 格式轉換response.setCreateTime(extendInfo.getCreateTime().getTime()); // Date → Long// 🔍 對象轉換response.setCreator(new BasicUserInfo(extendInfo.getCreatorMis(), extendInfo.getCreatorName()));return response;
    }
    
    職責:
    🎯 數據映射:將業務對象的字段映射到響應對象
    🎯 格式轉換:處理數據類型和格式的轉換
    🎯 對象構建:創建前端需要的嵌套對象結構
為什么需要這么多層?
  1. 單一職責原則(SRP)
    數據庫層 ← 只關心數據存儲
    中間層 ← 只關心業務邏輯
    響應層 ← 只關心接口契約
  2. 解耦和可維護性
    // 如果沒有分層,所有邏輯混在一起:
    public class BadExample {public String getFeature() {// 數據庫查詢 + 業務邏輯 + 格式轉換 混在一起// 難以維護、測試和修改}
    }// 分層后,職責清晰:
    public class GoodExample {// 查詢層:專注數據獲取// 業務層:專注業務邏輯// 轉換層:專注格式轉換
    }
    
  3. 變更隔離
    數據庫表結構變更 → 只影響 DO 層
    業務邏輯變更 → 只影響 ExtendInfo 層
    前端接口變更 → 只影響 Response 層
  4. 復用性
    // 同一個業務對象可以轉換為不同的響應格式TestFeatureExtendInfo extendInfo = ...;// 詳細響應TestFeatureGetResponse detailResponse = convertToDetailResponse(extendInfo);// 列表響應  TestFeatureListResponse listResponse = convertToListResponse(extendInfo);
    
  5. 測試友好
    // 可以獨立測試每一層
    @Test
    public void testDataLayer() {ModelFeatureDO result = mapper.getById(1L);// 只測試數據訪問
    }@Test  
    public void testBusinessLayer() {ModelFeatureExtendInfo result = service.buildExtendInfo(...);// 只測試業務邏輯
    }@Test
    public void testResponseLayer() {ModelFeatureGetResponse response = converter.convert(...);// 只測試格式轉換
    }
    
    總結
    在這里插入圖片描述
    這種分層設計雖然看起來復雜,但它帶來的可維護性、可擴展性和可測試性是巨大的,特別是在大型企業級系統中,這種設計模式是必不可少的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/93678.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/93678.shtml
英文地址,請注明出處:http://en.pswp.cn/web/93678.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

K8S的ingress

一。ingress的介紹對于NodePort和LoadBalance&#xff0c;這兩種方法&#xff0c;都有缺點&#xff1a;1.NodePort方式缺點會占用很多集群的端口&#xff0c;當集群服務變多的時候&#xff0c;缺點更加顯著2.LB的缺點就是每一個service都需要一個LB&#xff0c;浪費&#xff0c…

實現自己的AI視頻監控系統-序章

目錄簡介視頻監控系統是什么&#xff1f;該系列課程你會學到什么&#xff1f;需要準備哪些工具&#xff1f;下期預告簡介 在當今快速發展的科技時代&#xff0c;人工智能&#xff08;AI&#xff09;已經深入到我們生活的方方面面。其中&#xff0c;AI視頻監控系統作為安防領域…

Pytorch GPU版本安裝保姆級教程

本文將介紹在anaconda環境下安裝pytorch的詳細步驟。 Anaconda安裝教程參考Anaconda安裝保姆級教程。 目錄 一、工具安裝 二、創建虛擬環境 三、安裝Pytorch CUDA Toolkit安裝 Pytorch安裝 總結 一、工具安裝 點擊鏈接官網codetou.com&#xff0c;下載安裝最新版即可&…

重學React(六):脫圍機制二

背景&#xff1a; 話不多說&#xff0c;繼續學習&#xff0c;現在是Effect時間。 前期回顧&#xff1a; 重學React&#xff08;一&#xff09;&#xff1a;描述UI 重學React&#xff08;二&#xff09;&#xff1a;添加交互 重學React&#xff08;三&#xff09;&#xff1a;狀…

【MySQL】索引(B+樹詳解)

MySQL(五)索引 一、索引的減I/O設計 1.讀取量 2.搜索樹 2.1方向 2.2有序 3.分多叉 3.1B樹 弊端: 3.2B樹 3.2.1非葉子-搜索字段 3.2.1.1海量分叉 3.2.1.1.1最大式 3.2.1.1.2最快式 3.2.1.2緩存內存 3.2.1.2.1字段總量小 3.2.1.2.2時間復雜度 3.2.1.3區間搜索向…

GPT-5博士級AI使用教程及國內平替方案

GPT-5博士級AI使用教程及國內平替方案一、GPT-5核心升級&#xff1a;到底強在哪里&#xff1f;1. **統一入口自動思考模式**2. **256K上下文40萬漢字記憶**3. **人格系統長期記憶**4. **編程能力史詩級增強**二、注冊與訪問&#xff1a;國內用戶也能免費上車1.官方渠道&#xf…

云計算-多服務集群部署實戰指南:從JumpServer到Kafka、ZooKeeper 集群部署實操流程

簡介圍繞企業級服務部署與集群搭建&#xff0c;基于 OpenStack 私有云平臺&#xff0c;介紹了一系列關鍵服務的實操過程。內容涵蓋使用 CentOS7 系統部署 JumpServer 堡壘機并對接 controller 與 compute 節點&#xff0c;構建 RabbitMQ 集群&#xff08;含磁盤節點與內存節點配…

深入剖析Spring IOC容器——原理、源碼與實踐全解析

&#x1f31f; 你好&#xff0c;我是 勵志成為糕手 &#xff01; &#x1f30c; 在代碼的宇宙中&#xff0c;我是那個追逐優雅與性能的星際旅人。 ? 每一行代碼都是我種下的星光&#xff0c;在邏輯的土壤里生長成璀璨的銀河&#xff1b; &#x1f6e0;? 每一個算法都是我繪制…

探秘C語言:數據在內存中的存儲機制詳解

探秘C語言&#xff1a;數據在內存中的存儲機制詳解探秘C語言&#xff1a;數據在內存中的存儲機制詳解一、二進制與進制轉換&#xff1a;數據的不同"外衣"1.1基本概念1.2進制轉換二、整數在內存中的存儲&#xff1a;補碼的奧秘原碼、反碼、補碼總結探秘C語言&#xff…

HTML 常用標簽介紹

目錄 HTML 標簽 HTML 常用標簽速查表 文檔元標簽 頁面結構與布局 文本內容與排版 鏈接與媒體 列表與表格 表單與交互 其他功能標簽 文本結構標簽 文本格式化標簽 列表標簽 鏈接與導航標簽 媒體標簽 容器與結構標簽 表格標簽 表單標簽 元信息與文檔標簽 腳本…

kafka 沖突解決 kafka安裝

目錄 解法方法&#xff1a; 一般情況正常可以版本2.0.2 報錯&#xff1a; File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen…

論文閱讀 2025-8-9 [DiC, DropKey]

閑來沒事&#xff0c;找點近一年的論文看看 1. DiC: Rethinking Conv3x3 Designs in Diffusion Models ? 一句話總結&#xff1a;DiC用沙漏架構稀疏跳躍條件門控重構純Conv3x3擴散模型&#xff0c;在速度碾壓Transformer的同時性能反超&#xff0c;為實時生成任務開辟新路徑。…

16進制pcm數據轉py波形腳本

將16bit的單聲道或者雙聲道的16進制的pcm數據轉成波形圖片出來分析數據&#xff0c;python腳本如下&#xff1a;import numpy as np import matplotlib.pyplot as plt# 1: 單聲道&#xff0c;2&#xff1a;雙聲道 PCM_CHANNELS 2# 你提供的十六進制數據 hex_str ""…

MySQL的鎖:

目錄 鎖的介紹&#xff1a; 并發事務訪問相同數據可以分為以下幾種情況&#xff1a; 都是進行讀操作&#xff1a; 都是進行寫操作&#xff1a; 有讀操作也有寫操作&#xff1a; 讀鎖、寫鎖&#xff1a; 讀鎖&#xff1a; 寫鎖&#xff1a; 按照鎖粒度分類&#xff1a;…

一道同分排名的SQL題

1 概述遇到這樣一道題&#xff1a;(1) 有一張學生課程分數表&#xff0c;字段有&#xff1a;ID、名稱、性別、科目、分數。&#xff08;名稱換為學號更能標識唯一學生&#xff0c;但名稱好閱讀&#xff0c;故這里先認為名稱可以唯一標識學生。&#xff09;(2) 用一個SQL&#x…

ICCV 2025 | Reverse Convolution and Its Applications to Image Restoration

標題&#xff1a;Reverse Convolution and Its Applications to Image Restoration作者&#xff1a;Xuhong Huang, Shiqi Liu, Kai Zhang, Ying Tai, Jian Yang, Hui Zeng, Lei Zhang單位&#xff1a;Nanjing University, The Hong Kong Polytechnic University, OPPO Research…

mysql啟動超時

mysql啟動超時&#xff1a; 管理員打開CMD后允許net start MySQL57&#xff0c; 啟動超時檢查錯誤日志 MySQL 啟動失敗的具體原因通常記錄在錯誤日志中。 日志路徑&#xff08;根據你的安裝方式可能不同&#xff09;&#xff1a; 默認位置&#xff1a;C:\ProgramData\MySQL\MyS…

Flink Stream API 源碼走讀 - window 和 sum

本文核心觀點 核心觀點&#xff1a;WindowedStream 是一個"假流"&#xff0c;它比 KeyedStream 更虛&#xff0c;只是一個 API 的過渡器&#xff0c;不是真正意義上的 DataStream&#xff0c;需要調用函數回歸。 虛擬化時刻&#xff1a;從真實流到虛擬流 KeyedStream…

藍牙 GFSK RX Core 架構解析

GFSK RX Core分為以下幾個模塊&#xff1a; 1.Frequency offset compensation CORDIC 2.A low pass filter 3.A power estimator for packet detection,RSSI and digital gaion computation for DPSK path 4.A demodulator implemented as Phase Shift Discriminator 5.A drequ…

微電網管控系統中python多線程緩存與SQLite多數據庫文件連接池實踐總結(含源碼)

1. 引言 在分散的微電網能源管理場景中,系統采用集中式云平臺模式,為100個獨立微電網用戶提供高并發數據寫入服務面臨三大挑戰:用戶數據隔離、I/O性能瓶頸、多線程安全性。本文揭示一種新式的分片鎖+三級緩存+sqlite多數據庫文件連接池架構,在保持SQLite輕量級優勢的同時,…