Spring Boot入坑-1-入坑準備&Spring簡介

来源:https://www.cnblogs.com/sangrei/archive/2022/10/30/16839066.html
-Advertisement-
Play Games

本篇文章,將從 0 淺入,從什麼是哈希表講起,然後再說 Java 是怎樣實現哈希表的。整個梳理過程,將通過源碼這個第一手的資料進行梳理分析,吸收知識、解決疑問,一步一步進行梳理,如果你是對 HashMap 懵懵懂懂的同學,那麼歡迎跟著我的節奏一起來梳理!全文1萬2000多字,歡迎慢慢食用! ...


【寫在前面】

  • 長期做基於Spring Boot的企業應用,計劃將與應用相關的技術點,通過簡介、步驟、示例的方式,記錄並分享出來,用於作為Spring Boot入門的記錄與教程
  • 計劃的內容有:
    • Spring簡介
    • 第一個Spring Boot項目
    • Maven簡介
    • 使用RESTful API提供後端服務
    • 自動註入與自動裝配常用註解
    • application.properties
    • Lombok
    • Actuator和Admin
    • Swagger
    • AOP
    • ControllerAdvice
    • Interceptor
    • Filter
    • Application、Session、Request&Response
    • 文件上傳和文件下載
    • 數據訪問
    • DTO
    • 標準響應封裝
    • 複雜業務下的數據訪問
    • 緩存
    • 後端HTTP請求
    • 定時任務
    • 消息隊列
    • 打包和部署

工具準備

  • JDK 1.8
  • IntellJ IDEA
  • MySQL 5.7社區版
  • Navicat

後端技術概要

  • 現在企業級應用中,多採用前後端分離開發形式
  • 在Java技術棧的後端開發中,多以Spring Boot開發REST介面形式提供服務
  • Java、Java Web、Spring為Spring Boot應用提供了基石
  • 要很好的開發一個後端項目,需要掌握與Spring Boot相關的很多內容,包括
    • Maven:通過pom.xml配置快速引入依賴包,快速構建與發佈

    • 集成數據訪問組件:MyBatis及MyBatis plus集成與使用

    • 集成緩存:EhCache、Redis緩存工具使用

    • Swagger:提供可閱讀了後端介面

    • Git:IDE中集成進行代碼管理

    • Tomcat:項目發佈到Tomcat

    • Nginx:項目在Linux運行並通過Nginx反射代理出去

Spring簡介

概述

  • Spring是一個支持快速開發Java企業級應用程式的框架,可以和大量的開源框架集成
  • Spring是一個IoC和AOP容器框架
  • 由20多個模塊組成,1300多個文件或組件構成,這些組件被分別整合在核心容器(Core Container)、AOP(Aspect Oriented Programming)、設備支持(Instrumentation)、數據訪問及集成(Data Access/Integration)、Web、消息處理(Messaging)、Test等模塊集合
  • 在Spring基礎上誕生了很多項目,如Spring Data、Spring Security、Spring MVC、Spring Boot等

IoC(Inversion of Control)

  • 控制反轉,是一種設計思想,將原來用戶主動創建所有對象,轉變為,大部分重要的對象使用容器創建,並由容器管理對象的生命周期,減少代碼間的耦合
  • 核心邏輯是,通過藉助“第三方”,來實現具有依賴關係的對象間解耦
  • Spring中提供了完備的IoC容器,也稱Spring容器,即“第三方”
  • 下圖左邊為傳統new對象方式使用對象;右邊為藉助"第三方”Spring容器方式通過自動註入、自動裝配使用

 DI(Dependency Injection)

  • 依賴註入,控制反轉的一種實現方式或另一種表述方式
  • 當對象對其他對象有依賴的時候,通過配置或自動註入並裝配使用;如Student對象需要Class對象的時候,Class對象可以通過屬性註入的方式註入到Student對象

Spring特點

優點

  • Spring屬於低侵入,代碼污染極低
  • 使用Spring容器,降低組件之間的耦合,更專註於業務邏輯
  • AOP的很好支持,速食麵向切麵編程
  • 提供眾多服務組件,事務管理等功能,對主流的框架提供集成支持,如Hibernate,Struts2,JPA等
  • Spring的高度可開放性,不強制應用完全依賴於Spring,可自由選擇Spring部分或全部來實現業務

缺點

  • 重量級框架,裡面包含了很多組件,比如數據訪問、MVC、事務、AOP等,入門門檻高
  • 集成和配置複雜,尤其是集成第三方組件或框架時,需要進行XML配置
  • 構建和部署複雜,比如要依賴第三方的Web伺服器

示例

創建一個Spring控制台應用(使用IDEA)

創建步驟

  1. File菜單中選擇New Project
  2. 在菜單中選擇Spring,只勾選 Spring,不選擇其他項
  3. 項目創建完成後,相應的Spring的jar包都載入到依賴中了,存儲在lib目錄,也可以往裡面添加自己的Jar包
  4. 在src目錄下創建一個實體類(也可以是相應的業務類),如UserEntity
  5. 在src目錄下創建一個Spring配置文件(右鍵New->XML Configuration File->Spring Config),並配置相關bean,如針對UserEntity的bean
  6. 在src目錄下創建一個帶main方法的類,使用ClassPathXmlApplicationContext,載入XML中的bean配置,並通過getBean獲取容器中的對象bean

具體內容見附件1-spring-console-demo:https://files.cnblogs.com/files/sangrei/1-spring-console-demo.zip?t=1667127156。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 您好,我是湘王,這是我的博客園,歡迎您來,歡迎您再來~ 之前說過,AQS(抽象隊列同步器)是Java鎖機制的底層實現。既然它這麼優秀,是騾子是馬,就拉出來溜溜吧。 首先用重入鎖來實現簡單的累加,就像這樣: /** * 用重入鎖實現累加 * * @author 湘王 */ public class M ...
  • 前提 java version "1.8.0_25" 池簡述 軟體開發活動中,我們經常會聽到資料庫連接池、記憶體池、線程池等各種“池”概念,這些“池”到底是什麼東西呢?程式的世界里,我們可以將池簡單的理解為一種容器類數據結構,比如列表。程式處理信息的過程中,可能會依賴某些資源或者對象(暫且統一稱之為對 ...
  • 概念: 責任鏈模式又叫做職責鏈模式,是屬於行為型的一種。 責任鏈模式分為兩種: 第一種像工廠流水線,目的就讓每一個環節都進行處理。 第二種像層層審批,如果其中一個對象無法處理,調用下一個對象來進行處理,如果一旦能處理,鏈式就此停止,以此類推,第二種為了程式的健壯性,至少得需要一個兜底的模塊,防止穿透 ...
  • 前言 在併發編程中,當多個線程同時訪問同一個共用的可變變數時,會產生不確定的結果,所以要編寫線程安全的代碼,其本質上是對這些可變的共用變數的訪問操作進行管理。導致這種不確定結果的原因就是可見性、有序性和原子性問題,Java 為解決可見性和有序性問題引入了 Java 記憶體模型,使用互斥方案(其核心實現 ...
  • 前言 最近在調研 小米開放平臺 API 的能力,發現能力支持的實在有點少,沒辦法只能另闢蹊徑去逆向 Consule UI 的能力。 逆向工程最重要解決的就是“認證”。有沒有辦法自動登錄鑒權,或者使用一個長久可靠、可續期的 token,直接決定了該 Consule UI 是否可逆向。 逆向工程-認證 ...
  • 我們都知道,我們寫的Java程式需要先經過編譯,生成了.class文件(位元組碼文件)。然而,電腦並不能直接解釋.class文件裡面的內容,這時候就需要一個能載入、解釋.class文件並且能按.class文件里的內容進行處理的一個東西--JVM。 JVM,就是Java虛擬機。它是一種規範,有針對不同 ...
  • Count15 module top_module ( input clk, input reset, // Synchronous active-high reset output [3:0] q); always@(posedge clk) begin if(reset) q <= 4'd0; ...
  • 2022-10-30 連接資料庫的搭建環境 一、搭建環境 ①導入jar包(資料庫驅動包、資料庫連接池、DBUtils) jar包有:commons-dbutils-1.4.jar、 druid-1.0.9.jar 、mysql-connector-java-8.0.19.jar。 方式:在創建的“W ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...