使用Spring初始化加載InitializingBean()方法
Spring初始化加載InitializingBean()
1、spring初始化bean有兩種方式
1)實(shí)現(xiàn)InitializingBean接口,繼而實(shí)現(xiàn)afterPropertiesSet的方法 ;
2)利用類反射原理,配置加載文件,使用init-method標(biāo)簽直接注入bean。
2、相同點(diǎn)
實(shí)現(xiàn)注入bean的初始化。
3、不同點(diǎn)
實(shí)現(xiàn)的方式不一致。
接口比配置效率高,但是配置消除了對spring的依賴。而實(shí)現(xiàn)InitializingBean接口依然采用對spring的依賴。
4、InitializingBean接口定義的源碼如下所示
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
?
package org.springframework.beans.factory;?
public interface InitializingBean {
? ? void afterPropertiesSet() throws Exception;
}該方法在實(shí)現(xiàn)之后,會(huì)在程序加載完成之后執(zhí)行。
5、由于代碼在項(xiàng)目啟動(dòng)的時(shí)候會(huì)執(zhí)行afterPropertiesSet()方法
如果方法中包含修改字段的信息,那么多次啟動(dòng)就會(huì)造成多次修改字段的內(nèi)容。該方法常用的場景是數(shù)據(jù)庫鏈接中使用。如果多次鏈接會(huì)造成一定的資源浪費(fèi)。
除了修改字段類型外當(dāng)然也可以做別的事,如:檢查某表是否存在 存在的話里面的某值是否存在 不存在則添加。
6、這個(gè)方法將在所有的屬性被初始化后調(diào)用
但是會(huì)在init前調(diào)用。如果代碼是延遲加載,則馬上執(zhí)行。所以可以在類上加上@Lazy(false)注解,其中添加的內(nèi)容如下:
? ? import org.springframework.context.annotation.Lazy; ? ? @Lazy(false)
這樣spring容器初始化的時(shí)候afterPropertiesSet就會(huì)被調(diào)用,只需要實(shí)現(xiàn)InitializingBean接口就行。
關(guān)于InitializingBean簡單使用
InitializingBean接口為bean提供了初始化執(zhí)行的方法,即afterPropertiesSet方法,凡是繼承該接口的類,在初始化bean的時(shí)候會(huì)執(zhí)行該方法。
下面簡單示例:
這是一個(gè)Spring組件Filer

實(shí)現(xiàn)了afterPropertiesSet方法
在這個(gè)方法中使用了一個(gè)被Autowired注入的Spring Bean:

debug啟動(dòng)項(xiàng)目
可以正常使用被注入的組件!

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中的ConcurrentLinkedQueue使用解析
這篇文章主要介紹了Java中的ConcurrentLinkedQueue使用解析,一個(gè)基于鏈接節(jié)點(diǎn)的無界線程安全隊(duì)列,此隊(duì)列按照 FIFO(先進(jìn)先出)原則對元素進(jìn)行排序,隊(duì)列的頭部是隊(duì)列中時(shí)間最長的元素,需要的朋友可以參考下2023-12-12
SpringBoot常見get/post請求參數(shù)處理、參數(shù)注解校驗(yàn)及參數(shù)自定義注解校驗(yàn)詳解
這篇文章主要給大家介紹了關(guān)于SpringBoot常見get/post請求參數(shù)處理、參數(shù)注解校驗(yàn)及參數(shù)自定義注解校驗(yàn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
EventBus與Spring Event區(qū)別詳解(EventBus 事件機(jī)制,Spring Event事件機(jī)制)
這篇文章主要介紹了EventBus與Spring Event區(qū)別,需要的朋友可以參考下2020-02-02
Javaweb-HttpServletResponse的sendRedirectch重定向方式
這篇文章主要介紹了Javaweb-HttpServletResponse的sendRedirectch重定向方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
基于SpringBoot+Mybatis實(shí)現(xiàn)Mysql分表
這篇文章主要為大家詳細(xì)介紹了基于SpringBoot+Mybatis實(shí)現(xiàn)Mysql分表的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-04-04
SpringBoot中的MongoTemplate的各種條件查詢示例詳解
這篇文章主要介紹了SpringBoot中的MongoTemplate的各種條件查詢示例詳解,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借價(jià)值,需要的朋友參考下吧2024-01-01

