最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Spring動態(tài)修改bean屬性的key

 更新時間:2024年05月16日 09:16:10   作者:影??  
這篇文章主要介紹了使用Spring動態(tài)修改bean屬性的key方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Spring動態(tài)修改bean屬性的key

  • BeanDefinitionRegistryPostProcessor - 動態(tài)注冊bean定義
  • BeanFactoryPostProcessor - 動態(tài)修改bean定義
  • BeanPostProcessor - 動態(tài)修改bean,即在bean初始化前后做些特殊操作

BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor以及BeanPostProcessor都屬于Spring的后置處理器,可以實(shí)現(xiàn)它們以達(dá)到動態(tài)注冊bean定義,動態(tài)修改bean定義,以及動態(tài)修改bean。

1、BeanDefinitionRegistryPostProcessor

繼承接口BeanFactoryPostProcessor,該接口新增postProcessBeanDefinitionRegistry方法,方法參數(shù)是BeanDefinitionRegistry對象,BeanDefinitionRegistry對象是bean定義的保存中心。

2、BeanFactoryPostProcessor是一個接口

它允許自定義修改應(yīng)用程序上下文的bean定義,在基于bean factory上調(diào)整上下文的bean屬性值。

BeanFactoryPostProcessor可以與bean交互并修改bean定義,但從不使用bean實(shí)例。

實(shí)現(xiàn)該接口,可以在spring的bean創(chuàng)建之前,修改bean的定義屬性。

也就是說,Spring允許BeanFactoryPostProcessor在容器實(shí)例化任何其它bean之前讀取配置元數(shù)據(jù),并可以根據(jù)需要進(jìn)行修改,例如可以把bean的scope從singleton改為prototype,也可以把property的值給修改掉。

可以同時配置多個BeanFactoryPostProcessor,并通過設(shè)置’order’屬性來控制各個BeanFactoryPostProcessor的執(zhí)行次序。

這里我們想動態(tài)修改bean屬性的key,也就是希望修改bean的定義。

所以使用BeanFactoryPostProcessor即可。

  • 在application context執(zhí)行完標(biāo)準(zhǔn)初始化之后,所有bean definition都已加載,但還沒有實(shí)例化任何bean。
  • BeanFactoryPostProcessor允許插手修改context內(nèi)部bean工廠,允許覆蓋或添加屬性

3、BeanPostProcessor也是一個接口

它允許動態(tài)修改應(yīng)用程序上下文的bean,這時候bean已經(jīng)實(shí)例化成功。

BeanPostProcessor,該接口我們也叫后置處理器,作用是在bean對象的實(shí)例化和依賴注入完畢后,在顯示調(diào)用初始化方法的前后添加我們的邏輯。

這里需要注意的是Bean實(shí)例化完畢以及依賴注入完成后觸發(fā)的

package com.dpb.processor;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
/**
 * 自定義BeanPostProcessor實(shí)現(xiàn)類
 * BeanPostProcessor接口的作用是:
 * 	 我們可以通過該接口中的方法在bean實(shí)例化、配置以及其他初始化方法前后添加一些我們自己的邏輯
 * @author dengp
 *
 */
public class MyBeanPostProcessor implements BeanPostProcessor{

	/**
	 * 實(shí)例化、依賴注入完畢,在調(diào)用顯示的初始化之前完成一些定制的初始化任務(wù)
	 * 注意:方法返回值不能為null
	 * 如果返回null那么在后續(xù)初始化方法將報(bào)空指針異?;蛘咄ㄟ^getBean()方法獲取不到bena實(shí)例對象
	 * 因?yàn)楹笾锰幚砥鲝腟pring IoC容器中取出bean實(shí)例對象沒有再次放回IoC容器中
	 */
	@Override
	public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
		System.out.println("初始化 before--實(shí)例化的bean對象:"+bean+"\t"+beanName);
		// 可以根據(jù)beanName不同執(zhí)行不同的處理操作
		return bean;
	}

	/**
	 * 實(shí)例化、依賴注入、初始化完畢時執(zhí)行 
	 * 注意:方法返回值不能為null
	 * 如果返回null那么在后續(xù)初始化方法將報(bào)空指針異常或者通過getBean()方法獲取不到bena實(shí)例對象
	 * 因?yàn)楹笾锰幚砥鲝腟pring IoC容器中取出bean實(shí)例對象沒有再次放回IoC容器中
	 */
	@Override
	public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
		System.out.println("初始化 after...實(shí)例化的bean對象:"+bean+"\t"+beanName);
		// 可以根據(jù)beanName不同執(zhí)行不同的處理操作
		return bean;
	}

}

三者執(zhí)行順序

BeanDefinitionRegistryPostProcessor優(yōu)先于BeanFactoryPostProcessor執(zhí)行,BeanFactoryPostProcessor優(yōu)先于BeanPostProcessor執(zhí)行。

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java 中break如何跳出外部循環(huán)

    java 中break如何跳出外部循環(huán)

    這篇文章主要介紹了java 中break如何跳出外部循環(huán),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java集合功能與用法實(shí)例詳解

    Java集合功能與用法實(shí)例詳解

    這篇文章主要介紹了Java集合功能與用法,結(jié)合實(shí)例形式詳細(xì)分析了java集合的基本概念、功能、原理、操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • 理解Java當(dāng)中的回調(diào)機(jī)制(翻譯)

    理解Java當(dāng)中的回調(diào)機(jī)制(翻譯)

    今天我要和大家分享一些東西,舉例來說這個在JavaScript中用的很多。我要講講回調(diào)(callbacks)。你知道什么時候用,怎么用這個嗎?你真的理解了它在java環(huán)境中的用法了嗎?當(dāng)我也問我自己這些問題,這也是我開始研究這些的原因
    2014-10-10
  • Mybatis的Mapper代理對象生成及調(diào)用過程示例詳解

    Mybatis的Mapper代理對象生成及調(diào)用過程示例詳解

    這篇文章主要為大家介紹了Mybatis的Mapper代理對象生成及調(diào)用過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • idea導(dǎo)入maven工程的三種方法

    idea導(dǎo)入maven工程的三種方法

    這篇文章主要介紹了idea導(dǎo)入maven工程的三種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Java?Spring聲明式事務(wù)失效情況解決辦法(天翼通訊)

    Java?Spring聲明式事務(wù)失效情況解決辦法(天翼通訊)

    在Spring的聲明式事務(wù)中,多線程環(huán)境下事務(wù)會失效,因?yàn)樽泳€程無法繼承父線程的事務(wù)上下文,這篇文章主要介紹了Java?Spring聲明式事務(wù)失效情況解決辦法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-10-10
  • java8中的Collectors.groupingBy用法詳解

    java8中的Collectors.groupingBy用法詳解

    這篇文章主要介紹了java8中的Collectors.groupingBy用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • java中刪除數(shù)組中重復(fù)元素方法探討

    java中刪除數(shù)組中重復(fù)元素方法探討

    這個是一個老問題,但是發(fā)現(xiàn)大多數(shù)人說的還不夠透。小弟就在這里拋磚引玉了,歡迎拍磚
    2013-10-10
  • 解決Eclipse打開.java文件異常,提示用系統(tǒng)工具打開的問題

    解決Eclipse打開.java文件異常,提示用系統(tǒng)工具打開的問題

    這篇文章主要介紹了解決Eclipse打開.java文件異常,提示用系統(tǒng)工具打開的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Spring Boot Admin管理監(jiān)控?cái)?shù)據(jù)的方法

    Spring Boot Admin管理監(jiān)控?cái)?shù)據(jù)的方法

    本篇文章主要介紹了Spring Boot Admin管理監(jiān)控?cái)?shù)據(jù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12

最新評論

包头市| 大兴区| 西乌| 武穴市| 荃湾区| 开原市| 保山市| 敖汉旗| 左权县| 安图县| 固安县| 连城县| 资兴市| 上饶市| 衡阳市| 麻城市| 嘉荫县| 南汇区| 徐州市| 望谟县| 滕州市| 郓城县| 瑞昌市| 阿克苏市| 大兴区| 广饶县| 姚安县| 阳谷县| 三门县| 厦门市| 图片| 措美县| 潞城市| 铅山县| 南雄市| 天台县| 东兴市| 如东县| 宣城市| 乐陵市| 辛集市|