JAVA Bean 對象的作用域和生命周期

Bean 作用域和生命周期

  • 1. 作用域
    • 1.1 作用域定義
    • 1.2 Bean 的 6 種作?域
      • 1.2.1 singleton(單例作?域)
      • 1.2.2 prototype (原型作?域 / 多例作?域)
      • 1.2.3 request:(請求作?域)
      • 1.2.4 session:(會話作?域)
      • 1.2.5 application:(全局作?域)
      • 1.2.6 websocket:(HTTP WebSocket 作?域)
  • 1.3 設置作用域
  • 2. 生命周期

1. 作用域

1.1 作用域定義

Bean 的作?域是指 Bean 在 Spring 整個框架中的某種?為模式,?如 singleton 單例作?域,就表示 Bean 在整個 Spring 中只有?份,它是全局共享的,那么當其他?修改了這個值之后,那么另?個?讀取到的就是被修改的值。

1.2 Bean 的 6 種作?域

1.2.1 singleton(單例作?域)

  • 官?說明:(Default) Scopes a single bean definition to a single object instance for eachSpring IoC container.
  • 描述:該作?域下的Bean在IoC容器中只存在?個實例:獲取Bean(即通過applicationContext.getBean等?法獲取)及裝配Bean(即通過@Autowired注?)都是同?個對象。
  • 場景:通常?狀態的Bean使?該作?域。?狀態表示Bean對象的屬性狀態不需要更新
  • 備注:Spring默認選擇該作?域

1.2.2 prototype (原型作?域 / 多例作?域)

  • 官?說明:Scopes a single bean definition to any number of object instances.
  • 描述:每次對該作?域下的Bean的請求都會創建新的實例:獲取Bean(即通過applicationContext.getBean等?法獲取)及裝配Bean(即通過@Autowired注?)都是新的對象實例。(將原對象復制一份)
  • 場景:通常有狀態的Bean使?該作?域

1.2.3 request:(請求作?域)

  • 官?說明:Scopes a single bean definition to the lifecycle of a single HTTP request. That is,each HTTP request has its own instance of a bean created off the back of a single beandefinition. Only valid in the context of a web-aware Spring ApplicationContext.
  • 描述:每次http請求會創建新的Bean實例,類似于prototype
  • 場景:?次http的請求和響應的共享Bean
  • 備注:限定SpringMVC中使?

1.2.4 session:(會話作?域)

  • 官?說明:Scopes a single bean definition to the lifecycle of an HTTP Session. Only valid inthe context of a web-aware Spring ApplicationContext.
  • 描述:在?個http session中,定義?個Bean實例
  • 場景:?戶回話的共享Bean, ?如:記錄?個?戶的登陸信息
  • 備注:限定SpringMVC中使?

1.2.5 application:(全局作?域)

  • 官?說明:Scopes a single bean definition to the lifecycle of a ServletContext. Only valid inthe context of a web-aware Spring ApplicationContext.
  • 描述:在?個http servlet Context中,定義?個Bean實例
  • 場景:Web應?的上下?信息,?如:記錄?個應?的共享信息
  • 備注:限定SpringMVC中使?

1.2.6 websocket:(HTTP WebSocket 作?域)

  • 官?說明:Scopes a single bean definition to the lifecycle of a WebSocket. Only valid in thecontext of a web-aware Spring ApplicationContext.
  • 描述:在?個HTTP WebSocket的?命周期中,定義?個Bean實例
  • 場景:WebSocket的每次會話中,保存了?個Map結構的頭信息,將?來包裹客戶端消息頭。第?次初始化后,直到WebSocket結束都是同?個Bean。
  • 備注:限定Spring WebSocket中使?

Spring 中只能使用前兩種

singleton 和 application 的區別:

  1. singleton 作?于 IoC 的容器,? application 作?于 Servlet 容器
  2. singleton 是 Spring Core 的作?域;application 是 Spring Web 中的作?域

1.3 設置作用域

使? @Scope 標簽就可以?來聲明 Bean 的作?域
@Scope 的參數可以有兩種方式:

  1. 直接在括號中聲明作用域類型, 例如: @Scope(“prototype”)
  2. 使用全家變量作為參數, 例如: @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

2. 生命周期

所謂的?命周期指的是?個對象從誕?到銷毀的整個?命過程,我們把這個過程就叫做?個對象的?命周期。
Bean 的?命周期分為以下 5 ?部分:
1.實例化 Bean(為 Bean 分配內存空間)
2.設置屬性(Bean 注?和裝配)
3.Bean 初始化

  • 實現了各種 Aware 通知的?法,如 BeanNameAware、 BeanFactoryAware、ApplicationContextAware 的接??法;
  • 執? BeanPostProcessor 初始化前置?法;
  • 執? @PostConstruct 初始化?法,依賴注?操作之后被執?;
  • 執???指定的 init-method ?法(如果有指定的話);
  • 執? BeanPostProcessor 初始化后置?法。

4.使? Bean
5.銷毀 Bean

實例化和初始化的區別:
實例化和屬性設置是 Java 級別的系統“事件”,其操作過程不可???預和修改;?初始化是給開發者提供的,可以在實例化之后,類加載完成之前進??定義“事件”處理。

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

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

相關文章

【Redis】Redis 的學習教程(五)之 SpringBoot 集成 Redis

在前幾篇文章中,我們詳細介紹了 Redis 的一些功能特性以及主流的 java 客戶端 api 使用方法。 在當前流行的微服務以及分布式集群環境下,Redis 的使用場景可以說非常的廣泛,能解決集群環境下系統中遇到的不少技術問題,在此列舉幾…

Vector

歡迎來到Cefler的博客😁 🕌博客主頁:那個傳說中的man的主頁 🏠個人專欄:題目解析 🌎推薦文章:題目大解析2 目錄 👉🏻vector概念👉🏻vector constr…

Node + Express 后臺開發 —— 起步

Node Express 后臺開發 —— 起步 前面陸續學習了一下 node、npm、模塊,也稍嘗試 Express,感覺得換一個思路加快進行。 比如筆者對前端的開發已較熟悉,如果領導給一個內部小網站的需求,難道說你得給我配置一個后端?…

selenium 選定ul-li下拉選項中某個指定選項

場景:selenium的下拉選項是ul-li模式,選定某個指定的選項。 from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 顯示等待def select_li(self, text, *ul_locator):"…

六圖備份 大容量圖片

1.1、切割(9*16) # 參考網址:https://blog.csdn.net/weixin_42182534/article/details/125773141?ops_request_misc&request_id&biz_id102&utm_termpython%E6%88%AA%E5%8F%96%E5%9B%BE%E7%89%87%E7%9A%84%E4%B8%80%E9%83%A8%E5%…

為什么在Spring中使用@Autowired時會提示Field injection is not recommended 而@Resource不會

在使用IDEA進行開發時,在字段上使用Spring的依賴注入注解Autowired后會出現如下警告 Field injection is not recommended (字段注入是不被推薦的) 這個原因具體可以看看: 【注解使用】使用Autowired后提示:Field injection is not recomme…

【抖音小玩法-彈幕游戲】開發者功能測試報告提交模板

背景 字節有明確的要求,準入和準出更加嚴格,要求有明確的測試報告。格式如下: *本文參考字節wiki:開發者功能測試報告提交模板 網絡兼容性 請確認在以下網絡類型驗證過插件功能 WIFI 4G 測試機型 請羅列驗證過的雙端機型 An…

python+django+mysql高校校園外賣點餐系統--計算機畢設項目

本文的研究目標是以高校校園外賣點餐為對象,使其高校校園外賣點餐為目標,使得高校校園外賣點餐的信息化體系發展水平提高。論文的研究內容包括對個人中心、美食分類管理、用戶管理、商家管理、美食信息管理、工作人員管理、安全檢查管理、系統管理、訂單…

時序預測 | MATLAB實現基于GRU門控循環單元的時間序列預測-遞歸預測未來(多指標評價)

時序預測 | MATLAB實現基于GRU門控循環單元的時間序列預測-遞歸預測未來(多指標評價) 目錄 時序預測 | MATLAB實現基于GRU門控循環單元的時間序列預測-遞歸預測未來(多指標評價)預測結果基本介紹程序設計參考資料 預測結果 基本介紹 1.Matlab實現GRU門控循環單元時間序列預測未…

復數混頻器、零中頻架構和高級算法開發

文章里講解了關于射頻IQ調制器、零中頻架構相關的原理及技術,全都是干貨!其實好多同行對軟件無線電的原理、IQ調制、鏡像抑制都是一知半解,知其然不知其所以然。好好研讀這篇文章,相信會讓你有種恍然大悟的感覺。 RF工程常被視為…

Shell學習筆記之基礎部分

Shell基礎: 查看操作系統支持的shell: [rootrhel9 ansible]# cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bashShell的基本元素: 聲明:聲明用哪個命令解釋器來解釋并執行當前腳本文件中的語句,一般寫的…

大語言模型與語義搜索;釘釘個人版啟動內測,提供多項AI服務

🦉 AI新聞 🚀 釘釘個人版啟動內測,提供多項AI服務 摘要:釘釘個人版正式開始內測,面向小團隊、個人用戶、高校大學生等人群。該版本具有AI為核心的功能,包括文生文AI、文生圖AI和角色化對話等。用戶可通過…

【IEEE會議】第二屆IEEE云計算、大數據應用與軟件工程國際學術會議 (CBASE2023)

第二屆IEEE云計算、大數據應用與軟件工程國際學術會議 (CBASE2023) 隨著大數據時代的到來,對數據獲取的隨時性和對計算的需求也在逐漸增長。為推動大數據時代的云計算與軟件工程的發展,促進該領域學術交流,在CBASE 2022成功舉辦的…

設計模式——經典單例

0、核心要素 // 構造、析構函數私有化(一個進程只允許一個對象存在) // 對象私有化、靜態化(因為接口靜態函數) // 對象調用接口靜態化(因為靜態函數脫離了類對象,可以直接調用) 一、懶漢 唯…

如何更好的維護自己的電腦?

我的筆記本電腦 我使用的華碩天選3是一款游戲本,搭載了英特爾酷睿i7-12700H處理器,16GB內存,512GB固態硬盤和NVIDIA GeForce RTX 3050顯卡。屏幕尺寸為15.6英寸,分辨率為2560x1440。對于日常使用和工作學習娛樂都能滿足要求。 日常…

基于docker搭建pytest自動化測試環境(docker+pytest+jenkins+allure)

pytest搭建自動化測試環境(dockerpytestjenkinsallure) 這里我以ubuntu18為例 如果有docker環境,可以直接拉取我打包好的鏡像docker pull ziyigun/jenkins:v1.0 1 搭建Docker 1.1 安裝docker # 配置docker安裝環境 sudo apt-get install ap…

潤和軟件HopeStage操作系統正式上架阿里云、華為云、騰訊云商店

近日,潤和軟件HopeStage操作系統正式上架阿里云、華為云、騰訊云商店。 隨著科技的發展,云服務成為現代社會信息和資訊的交換、共享、存儲、檢索、應用等重要方式。阿里云、華為云、騰訊云作為我國云服務市場三巨頭,其云商店產品全面覆蓋云、…

Nvidia Jetson 編解碼開發(1)介紹

前言 由于項目需要,需要開發Jetson平臺的硬件編解碼; 優化CPU帶寬,后續主要以介紹硬件編解碼為主 1.Jetson各平臺編解碼性能說明 如下是拿了Jetson nano/tx2/Xavier等幾個平臺做對比; 這里說明的編解碼性能主要是對硬件來說的 2. 編解碼實現說明 2.1 軟件編解碼 優點:…

Idea中隱藏指定文件或指定類型文件

Setting ->Editor ->Code Style->File Types → Ignored Files and Folders輸入要隱藏的文件名,支持*號通配符回車確認添加

Windows權限維持—自啟動映像劫持粘滯鍵輔助屏保后門WinLogon

Windows權限維持—自啟動&映像劫持&粘滯鍵&輔助屏保后門&WinLogon 1. 前置2. 自啟動2.1. 路徑加載2.1.1. 放置文件2.1.2. 重啟主機 2.2. 服務加載2.2.1. 創建服務2.2.2. 查看服務2.2.3. 重啟主機 2.3. 注冊表加載2.3.1. 添加啟動項2.3.2. 查看注冊表2.3.3. 重啟…