學習筆記086——@PostConstruct注解和InitializingBean接口的使用

文章目錄

  • 1、@PostConstruct注解
    • 1.1 介紹
    • 1.2 用法
    • 1.3 場景
  • 2、InitializingBean接口
    • 2.1 介紹
    • 2.2 用法

1、@PostConstruct注解

1.1 介紹

@PostConstruct 是 Java EE/Jakarta EE 中的一個注解,用于標記一個方法在依賴注入完成后執行初始化操作。它通常與 Spring 框架一起使用,適用于需要在對象初始化時執行特定邏輯的場景。

  1. 初始化方法:標注的方法會在以下兩個操作完成后被調用:
  • 依賴注入(DI)完成:Spring 容器完成對 Bean 的屬性注入(如 @Autowired、@Value 等)。
  • Bean 實例化:Bean 對象被創建后。
  1. 執行時機: 是 Bean 生命周期中的一個關鍵步驟,通常在 @Autowired 或其他注入方式完成后執行,但早于 @PreDestroy 注解的銷毀方法。

1.2 用法

  • 無參數且無返回值:被標注的方法必須是 void 類型且無參數。

    // 正確
    @PostConstruct
    public void init() { ... } 
    
  • 不拋出受檢異常:方法不能聲明拋出受檢異常(checked exception),否則會拋出 BeanCreationException

    // 以下方法是錯誤的!
    @PostConstruct
    public void init() throws IOException { ... }
    
  • 實例方法:只能標注在實例方法上,不能用于靜態方法或字段。

  • 唯一性:一個 Bean 中只能有一個 @PostConstruct 方法,否則會引發沖突。

public class MyService {@Autowiredprivate DemoRepository demoRepository;@PostConstructpublic void init() {// 在依賴注入完成后執行的初始化邏輯System.out.println("DemoRepository is initialized: " + demoRepository);// 可在此處進行數據庫連接或其他初始化操作}
}

1.3 場景

  • 資源初始化:例如建立數據庫連接、初始化緩存、加載配置等。
  • 依賴驗證:檢查注入的依賴是否合法。
  • 狀態初始化:設置 Bean 的初始狀態。

2、InitializingBean接口

2.1 介紹

InitializingBean 是 Spring 中的一個接口,用在 Bean 初始化后執行自定義邏輯。它只提供了一個 afterPropertiesSet() 方法。

在這里插入圖片描述

該方法在以下時機被 Spring 容器自動調用:

  1. 屬性注入完成后(即所有通過 setter 方法或構造函數注入的屬性已設置完畢)。
  2. Bean 初始化階段的最后一步(在調用 @PostConstruct 注解的方法之后,如果同時存在的話)。

2.2 用法

@Service
@Slf4j
public class PlatformCommunicationServiceImpl implements InitializingBean {@Overridepublic void afterPropertiesSet() {syncPlatformDataInfo();log.info("執行了afterPropertiesSet方法");}
}

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

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

相關文章

考研系列—408真題操作系統篇(2015-2019)

目錄 # 2015年 1.死鎖處理 (1)預防死鎖 (2)避免死鎖 (3)死鎖檢測和解除 2.請求分頁系統的頁面置換策略、頁面置換策略 3.頁、頁框、頁表,基本分頁系統 # 2016年 1.異常、中斷 2.頁置換算法 3.進程的互斥操作 4.SPOOLing技術(從軟件方面實現設備共享) 5.一定要牢記…

argocd部署cli工具并添加k8s集群

先決條件: 1.已經有k8s集群,(網上一萬種部署方式,這里我使用的是kubekey部署的),也埋了個坑,后面說明. 2.已經部署好argocd,并驗證web已經可以訪問.參見 k8s部署argocd-CSDN博客 部署客戶端工具, 這里我是從web頁面上直接下載的對應版本的cli工具. 打開已經部署好的argoc…

打卡day52

簡單cnn 借助調參指南進一步提高精度 基礎CNN模型代碼 import tensorflow as tf from tensorflow.keras import layers, models from tensorflow.keras.datasets import cifar10 from tensorflow.keras.utils import to_categorical# 加載數據 (train_images, train_labels),…

OpenGL ES繪制3D圖形以及設置視口

文章目錄 關于 glDrawElements基本概念使用場景mode 繪制模式type 索引數據類型indices 索引緩沖區工作原理繪制正方體實例 視口透視投影(Perspective Projection)正交投影(Orthographic Projection)正交投影和透視投影對比 關于 …

【SAS求解多元回歸方程】REG多元回歸分析-多元一次回歸

多元一次回歸是一種統計方法,用于分析多個自變量(解釋變量)與一個因變量(響應變量)之間的線性關系。 目錄 【示例】 基本語法 SAS代碼 參數估計 方差分析 回歸統計量 y的擬合診斷 y的回歸變量值 【示例】 設Y…

卡通幼兒園教育通用可愛PPT模版分享

幼兒園教育通用PPT模版,教育教學PPT模版,卡通教育PPT模版,可愛卡通教學課件PPT模版,小清新動物卡通通用PPT模版,教學說課通用PPT模版,開學季PPT模版,國學頌歌PPT模版,可愛簡約風PPT模…

力扣HOT100之技巧:75. 顏色分類

這道題實際上就是讓我們不用sort()函數來實現對原數組的排序,這里我直接使用快速排序對原數組進行排序了,也是復習一下基于快慢指針的快速排序寫法。面試手撕快排的思路參考這個視頻。 用時擊敗100%,還行。下面直接貼代碼。 class Solution …

離線部署openstack 2024.1 keystone

控制節點身份服務 離線下載 apt-get install --download-only keystone python3-openstackclient apache2 libapache2-mod-wsgi-py3mkdir /controller/keystone mv /var/cache/apt/archives/*.deb /controller/keystone/ dpkg -i /controller/keystone/*.deb在一個控制節點操…

帆軟 BI 從入門到實戰全攻略(一):安裝激活與添加數據

一、帆軟 BI 產品概述? 在當今大數據時代,數據分析與可視化成為企業洞察業務、驅動決策的關鍵利器。帆軟軟件有限公司作為中國專業的大數據 BI 和分析平臺提供商,自 2006 年成立以來,憑借其在商業智能和數據分析領域的深耕細作,…

網絡協議通俗易懂詳解指南

目錄 1. 什么是網絡協議? 1.1 協議的本質 1.2 為什么需要協議? 1.3 協議分層的概念 2. TCP協議詳解 - 可靠的信使 ?? 2.1 TCP是什么? 2.2 TCP的核心特性 ?? 面向連接 ??? 可靠傳輸 ?? 流量控制 2.3 TCP三次握手 - 建立連接 2.4 TCP四次揮手 - 斷開連接…

量子加速器切入 AI 底層架構!能源焦慮時代,ORCA 正在改寫數據中心的計算邏輯

內容來源:量子前哨(ID:Qforepost) 文丨浪味仙 排版丨浪味仙 行業動向:2000字丨5分鐘閱讀 人工智能的飛速發展,令計算需求呈現爆炸式增長,也催生出專為 AI 設計的新型計算基礎設施形態——AI…

< 買了個麻煩 (二) 618 京東云--輕量服務器 > “可以為您申請全額退訂呢。“ 工單記錄:可以“全額退款“

事情進展是這樣的: 海外接聽 一分鐘 1-2 元,具體多少要問聯通。 這幾天接電話,有點兒心煩,看見來自 010-86310548 以為是 ICP 備案,結果接起來全是 VPS (輕量應用服務器)這個工單,就…

接口限頻算法:漏桶算法、令牌桶算法、滑動窗口算法

文章目錄 限頻三大算法對比與選型建議一、漏桶算法(Leaky Bucket Algorithm)1.核心原理2.實現3.為什么要限制漏桶容量4.優缺點分析 二、令牌桶算法(Token Bucket Algorithm)1.核心原理2.實現(1)單機實現&am…

HTML5 盒子模型

1. 盒子模型的概念 2. 邊框(border) 邊框顏色(border-color) 邊框粗細(border-width) 邊框樣式(border-style) border簡寫(border:) 3. 外邊距&am…

【Linux】Linux高級I/O

參考博客:https://blog.csdn.net/sjsjnsjnn/article/details/128345976 一、五種IO模型 阻塞式I/O非阻塞式I/OI/O復用(多路轉接)信號驅動式I/O異步I/O I/O我們并不陌生,簡單的說就是輸入輸出;對于一個輸入操作通常包…

關于界面存在AB測試后UI刷新空白的問題

問題描述: 在同一頁面存在AB面,A和B同時都有一個rv,然后A面的rv填充不了數據,B面的可以。 問題解決: header_task布局里的include_new_gift_sign里有一個和外層一樣id的recyclerview include的標簽的作用是。在infl…

Go 協程(Goroutine)入門與基礎使用

一、什么是協程(Goroutine)? 簡單來說,協程是由 Go 語言運行時管理的輕量級線程。相比系統線程,它的調度開銷極小,內存占用非常少(默認只需 2KB 棧空間)。 你可以在一個程序中輕松…

matlab 各種智能優化算法

1. 優化算法相關 蟻群優化算法(ACO) 蟻群優化算法是一種模擬螞蟻覓食行為的優化技術。以下是一個簡化版的ACO用于解決旅行商問題(TSP)的MATLAB代碼: function [bestRoute, minDist] acoTsp(distMatrix, numAnts, n…

Hilt -> Android 專屬依賴注入(DI)框架

Hilt 是 Google 基于 Dagger 封裝的 Android 專屬依賴注入(DI)框架,顯著簡化了依賴管理流程,提升代碼可維護性和可測試性。以下是核心要點及使用指南: dagger2: Dagger 2 原理和使用-CSDN博客 Hilt vs Dagger2&…

AISHELL-5 全球首套智能駕艙中文語音交互數據集開源

隨著汽車成為人們日常生活中不可或缺的一部分,而駕駛艙中傳統的觸摸交互方式容易分散駕駛員的注意力,存在安全風險,因此,車內基于語音的交互方式得到重視。與通常家庭或會議場景中的語音識別系統不同,駕駛場景中的系統…