Spring的三種注入方式的優缺點分析

在 Spring 中,提供了三種依賴注入(也被稱之為 "對象注入","屬性裝配"等)的方式,這篇博客我們來分析一下這三種方式各有哪些優缺點。

一、屬性注入

優點

簡潔,使用方便。

缺點

? 只能用于 IoC 容器,如果是非?IoC 容器不可用,并且只有在使用的時候才會出現 NPE(空指

針異常);

? 不能注入?個 Final 修飾的屬性。

二、構造函數注入

此方式推薦 Spring 4.X 進行使用

優點

? 可以注入 final 修飾的屬性;

? 注入的對象不會被修改;

? 依賴對象在使用前,一定會被完全初始化,因為依賴是在類的構造方法中執行的,而構造方法

是在類加載階段就會執行的方法;

? 通用性好, 構造方法是 JDK 支持的, 所以更換任何框架,他都是適用的。

缺點

? 注入多個對象時, 代碼會比較繁瑣。

三、Setter注入

此方式推薦 Spring 3.X進行使用

優點

方便在類實例之后, 重新對該對象進行配置或者注?

缺點

? 不能注入?個 Final 修飾的屬性

? 注入對象可能會被改變, 因為 setter 方法可能會被多次調?, 就有被修改的風險。

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

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

相關文章

競賽選題 卷積神經網絡手寫字符識別 - 深度學習

文章目錄 0 前言1 簡介2 LeNet-5 模型的介紹2.1 結構解析2.2 C1層2.3 S2層S2層和C3層連接 2.4 F6與C5層 3 寫數字識別算法模型的構建3.1 輸入層設計3.2 激活函數的選取3.3 卷積層設計3.4 降采樣層3.5 輸出層設計 4 網絡模型的總體結構5 部分實現代碼6 在線手寫識別7 最后 0 前言…

C++內存的一些知識點

一、內存分區 在C中,內存主要分為以下幾個區域: 代碼區:存放函數體的二進制代碼。 全局/靜態存儲區:存放全局變量和靜態變量,這些變量在程序的整個運行期間都存在。常量存儲區:存放常量,這些值…

學懂C#編程:實用方法——string字符串指定連接符拼接之 string.Join 的詳細用法

在C#中,string.Join 方法用于將一個字符串數組或集合中的元素連接成一個單一的字符串,并在每個元素之間插入指定的分隔符。這個方法非常有用,特別是在需要將多個字符串合并成一個字符串時。以下是 string.Join 方法的詳細用法: 方…

WPF UI 界面布局 魔術棒 文字筆記識別 技能提升 布局功能擴展與自定義 繼承Panel的對象,測量與排列 系列七

應用開發第一步 功能分類:頁面上的功能區域劃分。。。。需求分析 業務邏輯 數據流 功能模塊 UI/UX 編碼 測試 發布 功能開發與布局 不用顯式的方式設定元素的尺寸 不使用屏幕坐標來指定位置 Grid 功能最強大,布局最靈活的容器…

卷積神經網絡:目標檢測的黃金鑰匙

標題:卷積神經網絡:目標檢測的黃金鑰匙 卷積神經網絡(CNN)是深度學習中用于處理具有網格結構數據(如圖像)的強大工具。在目標檢測任務中,CNN不僅提升了檢測的準確性,還極大地推動了…

開發個人Go-ChatGPT--5 模型管理 (一)

開發個人Go-ChatGP–5 模型管理 (一) 背景 開發一個chatGPT的網站,后端服務如何實現與大模型的對話?是整個項目中開發困難較大的點。 如何實現上圖的聊天對話功能?在開發后端的時候,如何實現stream的響應呢?本文就…

Vue-Router4.0 報“Cannot read property ‘forEach‘ of undefined”

Vue-Router4.0在創建路由時 報“Cannot read property ‘forEach‘ of undefined” 解決辦法 將路由規則名稱更改為routes,否則報錯 import { createWebHashHistory, createRouter } from vue-router; // 創建路由規定 const routes [{path: /login,name: login,co…

Linux Docker 防火墻設置 放通 MySQL(3306) Redis(6379) 端口

Linux Docker 防火墻設置 放通 MySQL(3306) Redis(6379) 端口,使用firewalld 防火墻或iptables ,因此嘗試重新啟動 firewalld 服務,添加防火墻規則,并檢查防火墻狀態。以下是詳細步驟: 1. 啟動 firewalld 服務 首先啟…

qt opencv 應用舉例

在Qt中使用OpenCV可以實現各種圖像處理和計算機視覺任務。以下是一些Qt與OpenCV聯合應用的具體舉例: 1. 圖像讀取與顯示 讀取圖像:使用OpenCV的imread函數可以方便地讀取各種格式的圖像文件,如.bmp、.jpg、.png等。這個函數返回一個Mat對象…

【Unity數據交互】Unity中使用二進制進行數據持久化

👨?💻個人主頁:元宇宙-秩沅 👨?💻 hallo 歡迎 點贊👍 收藏? 留言📝 加關注?! 👨?💻 本文由 秩沅 原創 👨?💻 專欄交流🧧&…

SqlSugar分表筆記

1、使用SqlSugar的分表功能時,.net要使用.net core; 我開始使用的是.net freamwork4.72,程序報異常,沒能解決,換到.net core下面就正常; 2、SqlSugar自帶分表支持按季度、月、周、日進行分表&#x…

ArcGIS Pro SDK (七)編輯 15 版本控制選項

ArcGIS Pro SDK (七)編輯 15 版本控制選項 文章目錄 ArcGIS Pro SDK (七)編輯 15 版本控制選項獲取和設置版本控制選項 環境:Visual Studio 2022 .NET6 ArcGIS Pro SDK 3.0 獲取和設置版本控制選項 var vOptions A…

PostgreSQL 技術內幕(十七):FDW 實現原理與源碼解析

對于一定規模的系統而言,數據倉庫往往需要訪問外部數據來完成分析和計算。外部數據包裝器(Foreign Data Wrapper, 簡稱 FDW)是 PostgreSQL 提供的訪問外部數據源機制。用戶可以使用簡單的 SQL 語句訪問和操作外部數據源&#xff0…

Python面試題:Python 中的生成器(generator)是什么?有什么優點?

在Python中,生成器(generator)是一種特殊的迭代器,使用yield關鍵字生成值,可以逐個生成序列中的值,而不需要一次性將所有值加載到內存中。生成器函數在定義時使用def關鍵字,并包含一個或多個yie…

[word] Word如何快速生成一段文本 #知識分享#學習方法

Word如何快速生成一段文本 Word如何快速生成一段文本?有時候我們會用一大段文字來做一些功能測試,不少朋友的做法就是臉滾鍵盤,一頓亂按,這樣看起來文筆不通,看著也會比較難受,測試功能的效果也不怎么理想…

uniapp中實現跳轉鏈接到游覽器(安卓-h5)

uniapp中實現跳轉鏈接到游覽器(安卓-h5) 項目中需要做到跳轉到外部鏈接,網上找了很多都不是很符合自己的要求,需要編譯成app后是跳轉到游覽器打開鏈接,編譯成web是在新窗口打開鏈接。實現的代碼如下: 效果&…

java基于ssm+vue 旅游信息資源平臺

1前臺首頁功能模塊 旅游資源網站 ,在系統首頁可以查看首頁、景點信息、酒店信息、客房信息、交流論壇、紅色文化、個人中心、后臺管理、客服等內容,如圖1所示。 圖1系統功能界面圖 用戶登錄、用戶注冊,在注冊頁面可以填寫用戶名、密碼、姓名…

Redis GEO 功能解析

Redis GEO 功能解析 引言 Redis GEO 是 Redis 數據庫提供的一個特殊功能,用于存儲地理位置信息,并支持基于地理位置的查詢。這一功能對于需要處理地理位置數據的現代應用程序來說非常寶貴,如外賣配送、社交媒體、地圖服務等。本文將詳細介紹 Redis GEO 的功能、使用方法,…

DFS之剪枝與優化——AcWing 165. 小貓爬山

DFS之剪枝與優化 定義 DFS之剪枝與優化指的是在執行深度優先搜索(DFS, Depth-First Search)時,采取的一系列策略來減少搜索空間,避免無效計算,從而加速找到問題的解。剪枝是指在搜索過程中,當遇到某些條件不符合解的要求或者可以…

產科管理信息系統源碼:產科電子病歷、高危孕產婦五色管理系統源碼 孕產婦健康管理信息平臺源碼

產科管理信息系統源碼:產科電子病歷、高危孕產婦五色管理系統源碼 孕產婦健康管理信息平臺源碼 產科電子病歷系統是以采集病人在整個醫療護理過程中所產生的各種信息。包括病案首頁、門診病歷、住院病歷、出院記錄、病人病程記錄等全部病歷文書;涵蓋文字…