Spring入門概念 以及入門案例

Spring入門案例

  • Spring
    • spring是什么
    • spring的狹義與廣義
    • spring的兩個核心模塊
      • IoC
      • AOP
    • Spring framework特點
    • spring入門案例
      • 不用new方法,如何使用返回創建的對象
    • 容器:IoC
      • 控制反轉
      • 依賴注入

Spring

spring是什么

  • spring是一款主流的Java EE輕量級開源框架

spring的狹義與廣義

  • 廣義上的spring泛指以Spring Framework為核心的Spring技術棧
  • 狹義上的spring特指Spring Framework,通常我們將它稱為Spring框架

spring的兩個核心模塊

IoC

  • Inverse of Control,的簡寫,譯為“控制反轉”,指把創建對象過程交給Spring進行管理

AOP

  • Aspect Oriented Programming的簡寫,譯為“面向切面編程”。AOP用來封裝多個類的公共行為,將那些與業務無關,卻為業務模塊所共同調用的邏輯封裝起來,減少系統的重復代碼,降低模塊間的耦合度,另外,AOP還解決一些系統層面上的問題,比如日志、事務、權限等

Spring framework特點

  • 非侵入式
  • 控制反轉
  • 面向切面編程
  • 容器
  • 組件化
  • 一站式

spring入門案例

  1. 引入spring相關依賴
<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.14</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.6.3</version></dependency></dependency></dependencies>
  1. 創建類、定義屬性和方法
public class User {public void add(){System.out.println("add.....");}
}
  1. 按照spring要求創建配置文件(xml格式)
    注意:這里的class中是你的文件路徑,由于波煮是跟著B站尚硅谷學的,所以這里就是com.atguigu.spring6
<!--id屬性:唯一標識class屬性:要創建對象所在類的全路徑(包名稱+類名稱)
--><bean id="user" class="com.atguigu.spring6.User"/>
  1. 在spring配置文件配置相關信息
  2. 進行最終測試

不用new方法,如何使用返回創建的對象

  1. 加載bean.xml配置文件
  2. 對xml文件進行解析操作
  3. 獲取xml文件beam標簽屬性值(ID屬性值和class屬性值)
  4. 使用反射根據類全路徑創建對象
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestUser {@Testpublic void testUserObject(){//加載spring配置文件,對象創建ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");//獲取創建的對象User user = (User)context.getBean("user");System.out.println("1:"+user);//使用對象調用方法進行測試System.out.print("2:");user.add();}
}

容器:IoC

  • Spring通過IoC容器來管理所有Java對象的實例化和初始化,控制對象與對象之間的依賴關系
  • 我們將由IoC容器管理的Java對象稱為Spring Bean,它與使用關鍵字new創建的Java對象沒有任何區別
  • 容器放bean對象,使用map集合

控制反轉

  • 控制反轉是一種思想
  • 控制反轉是為了降低程序耦合度,提高程序擴展力
  • 控制反轉,反轉的是什么?
    • 將對象的創建權利交出去,交給第三方容器負責
    • 將對象和對象之間關系的維護權交出去,交給第三方容器負責
  • 控制反轉這種思想如何實現呢?
    • DI(dependency injection):依賴注入

依賴注入

  • DI(Dependency injection):依賴注入,依賴注入實現了控制反轉的思想
  • 定義:指Spring創建對象的過程中,將對象依賴屬性通過配置進行注入
  • 依賴注入常見的實現方式包括兩種:
    • set注入
    • 構造注入
  • 結論:IOC是一種控制反轉的思想,而DI是對IOC的一種具體實現
  • Bean管理說的是:Bean對象的創建,以及Bean對象中屬性的賦值(或者叫做Bean對象之間關系的維護)

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

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

相關文章

The packaging for this project did not assign a file to the build artifact

問題&#xff1a; maven install報錯&#xff1a;The packaging for this project did not assign a file to the build artifact 解決方案&#xff1a; 方案1&#xff1a; 使用mvn clean install 就可以解決問題&#xff0c; 方案2&#xff1a; 找到lifecycle點clean再點…

C++入門一:C++ 編程概述

一、C 語言與 C 的關系&#xff1a;從 “帶類的 C” 到獨立王國 1.1 血緣關系&#xff1a;C 是 C 的 “超級進化版” 起源&#xff1a;C 由 Bjarne Stroustrup 在 1980 年代開發&#xff0c;最初名為 “C with Classes”&#xff08;帶類的 C&#xff09;&#xff0c;旨在為 …

LLM生成文本的 束搜索參數是什么(Beam Search)

LLM生成文本的 束搜索參數是什么(Beam Search) 束搜索(Beam Search)是一種在序列生成任務(如機器翻譯、文本生成等)中常用的啟發式搜索算法,用于在搜索空間中尋找最優的生成序列。 束搜索的基本概念 在序列生成過程中,每一步都會有多個可能的選擇(即候選標記)。 …

Java-多級排序結合thenComparing()

List<User>,user有個字段有值的時候設置1,沒值就是null,怎么排序根據這個字段排序? 若要對 List<User> 按照某個字段(如 flag,有值時為 1,無值時為 null)排序,可 以使用 ??Comparator?? 結合 null 值處理邏輯。 1. 排序規則說明?? 假設需求是:…

卷積神經網絡(CNN)基礎

目錄 一、應用場景 二、卷積神經網絡的結構 1. 輸入層&#xff08;Input Layer&#xff09; 2. 卷積層&#xff08;Convolutional Layer&#xff09; 3. 池化層&#xff08;Pooling Layer&#xff09; 最大池化&#xff08;max_pooling&#xff09;或平均池化&#xff08;…

Android 中集成 Unity 工程的步驟

在 Adroid 項目中集成 Unity 工程,主要步驟如下: 一、前提條件 1、已有一個 Android 工程項目; 2、Unity 工程已導出為 Android 工程,目錄大概如下: 二、集成步驟 1、在 Android 工程中導入 Unity 工程的 unityLibrary 模塊。 在 Android Studio 中,點擊菜單欄 Fil…

熱Key問題及其解決方案:Redis高并發場景下的性能優化

目錄 一、熱Key問題的本質與影響 1.1 什么是熱Key&#xff1f; 典型熱Key場景&#xff1a; 1.2 熱Key造成的技術挑戰與業務影響 技術層面影響&#xff1a; 業務層面影響&#xff1a; 二、熱Key的科學判定與識別方法 2.1 定量判定標準 QPS集中度指標 資源消耗指標 2.…

2025年智能 ITSM產品推薦

2025年數字經濟占GDP比重將突破62%&#xff0c;IT服務管理&#xff08;ITSM&#xff09;系統已成為企業核心競爭力的"數字底座"。根據IDC最新報告&#xff0c;采用AI驅動的智能ITSM系統可使企業運營效率提升41%&#xff0c;故障恢復成本降低58%。本文從智能化水平、產…

動手人形機器人(RL)

1 PPO的講解 核心步驟&#xff0c;如策略網絡和價值網絡的定義、優勢估計、策略更新、價值更新等基礎功能的實現 2 代碼構成 可能涉及 初始化&#xff0c;Behavior Clone 3 動手強化學習 import pytorch as torch class actorcritic ##等待補充 4 PD Gains 在機器人學中&…

Mujoco xml模型

Mujoco xml模型 一個例子compileroptionassetmesh default基本使用childclass與class多個class worldbodybody關系inertialjointgeom XML主要分為以下三個部分&#xff1a; < asset> &#xff1a; 用 tag導入STL文件&#xff1b;< worldbody>&#xff1a;用tag定義…

【Redis】背景知識

一、Redis的特性 Redis是一種基于鍵值對&#xff08;key-value&#xff09;的NoSQL數據庫&#xff0c;與很多鍵值對數據庫不同的是&#xff0c;Redis中的值可以是由string&#xff08;字符串&#xff09;&#xff0c;hash&#xff08;哈希&#xff09;&#xff0c;list&#xf…

Redis的used_memory_peak_perc和used_memory_dataset_perc超過90%會怎么樣

當Redis的used_memory_peak_perc&#xff08;當前內存占歷史峰值的百分比&#xff09;和used_memory_dataset_perc&#xff08;數據集內存占比&#xff09;均超過90%時&#xff0c;可能引發以下問題及風險&#xff1a; 一、used_memory_peak_perc > 90% 的影響 內存交換風險…

嵌入式---灰度傳感器

灰度傳感器概覽 一、定義與核心功能 1. 定義 灰度傳感器是一種基于 光反射原理 的光電傳感器&#xff0c;通過檢測物體表面對入射光&#xff08;多為紅外光或可見光&#xff09;的反射強度&#xff0c;將光信號轉換為電信號&#xff0c;從而判斷目標物體的 灰度值&#xff0…

0303hooks-react-仿低代碼平臺項目

文章目錄 1. 副作用2.其他內置hooks2.1 useEffect2.2 useRef2.3useMemo2.4 useCallback 3.自定義hooks4. 第三方hooks5. hooks使用原則6. hooks閉包陷阱7. 總結結語 1. 副作用 當組件渲染完成時&#xff0c;加載一個Ajax網絡請求當某個state更新時&#xff0c;加載一個Ajax網絡…

Zephyr、FreeRTOS、RT-Thread 定時器區別分析

一、核心特性對比 特性ZephyrFreeRTOSRT-Thread定時器類型系統定時器&#xff08;k_timer&#xff09;、硬件定時器軟件定時器&#xff08;基于系統tick&#xff09;軟件定時器、硬件定時器定時模式單次、周期性單次、自動重載&#xff08;周期性&#xff09;單次、周期、自定…

手撕unique_ptr 和 shareed_ptr

文章目錄 unique_ptrshared_ptr unique_ptr template<class T> class Unique_ptr { private:T* ptrNULL; public://1、刪除默認的拷貝構造函數Unique_ptr(Unique_ptr& u) delete;//2、刪除默認的復制構造Unique_ptr& operator(Unique_ptr& u) delete; …

對比 HashMap 和 ConcurrentHashMap 擴容邏輯的差異

HashMap 和 ConcurrentHashMap 在 擴容邏輯 上有明顯的差異&#xff0c;尤其是在并發環境下的處理策略&#xff0c;這是它們核心區別之一。 &#x1f9f1; 一、總體對比表&#xff08;JDK 8 為例&#xff09; 特性HashMapConcurrentHashMap線程安全? 否? 是是否支持并發擴容…

Linux 的準備工作

1.root用戶登錄 首先講一下root賬戶怎么登陸 直接 ssh root 公ip地址就可以了 比如我的是騰訊云的 這個就是公ip 下面所有普通用戶的操作都是在root賬戶下進行的 2.普通用戶創建 創建用戶指令 adduser 用戶名 比如說這個指令 我創建了一個ly_centos的普通用戶 3.普通用…

自動變為 VIP 文章

今天突然發現自己寫的大部分文章都被自動設為了VIP文章。 我這才想起來以前好像填過一個什么表&#xff0c;說要允許CS-DN把自己寫的文章自動設為VIP文章。 我也忘了為啥要允許CSDN動我寫的文章了&#xff0c;把幾乎所有文章都給設為VIP顯然是不合適的&#xff0c;畢竟文章是給…

Vue3+Vite+TypeScript+Element Plus開發-08.登錄設計

系列文檔目錄 Vue3ViteTypeScript安裝 Element Plus安裝與配置 主頁設計與router配置 靜態菜單設計 Pinia引入 Header響應式菜單縮展 Mockjs引用與Axios封裝 登錄設計 登錄成功跳轉主頁 多用戶動態加載菜單 文章目錄 目錄 系列文檔目錄 文章目錄 前言 一、登錄mo…