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

Spring的Bean注入解析結(jié)果BeanDefinition詳解

 更新時(shí)間:2023年12月01日 10:17:39   作者:軍偉@  
這篇文章主要介紹了Spring的Bean注入解析結(jié)果BeanDefinition詳解,BeanDefinition描述了一個(gè)bean實(shí)例,擁有屬性值、構(gòu)造參數(shù)值和具體實(shí)現(xiàn)的其他信息,其是一個(gè)bean的元數(shù)據(jù),xml中配置的bean元素會被解析成BeanDefinition對象,需要的朋友可以參考下

Bean注入解析結(jié)果BeanDefinition

BeanDefinition描述了一個(gè)bean實(shí)例,擁有屬性值、構(gòu)造參數(shù)值和具體實(shí)現(xiàn)的其他信息,其是一個(gè)bean的元數(shù)據(jù),xml中配置的bean元素會被解析成BeanDefinition對象。

BeanDefinition的接口的結(jié)構(gòu)類圖:

ChildBeanDefinition

  可以讓子Bean定義擁有從父母哪里繼承配置的能力。相應(yīng)的,子Bean定義有一個(gè)固定的依賴--他們的父bean定義。

  一個(gè)子bean定義將繼承父母的構(gòu)造參數(shù)值、屬性值和方法覆蓋并且可以選擇的增加新的值。 如果初始化方法、銷毀方法或者靜態(tài)工廠方法已經(jīng)指定了,那么將覆蓋父bean定義中的相關(guān)配置。 子bean定義保留的配置將是:依賴、自動裝配模式、依賴檢查、單例和延遲加載。

注意: 自從Spring 2.5之后, 編程的方式注冊bean定義的優(yōu)選方法是使用 GenericBeanDefinition類, 允許使用GenericBeanDefinition.setParentName方法動態(tài)的定義父依賴。 在大多數(shù)場景下可以 有效的取代ChildBeanDefinition類。

GenericBeanDefinition

  GenericBeanDefinition是一個(gè)定義標(biāo)準(zhǔn)的bean定義的一站式服務(wù)。

  像任何Bean定義,它允許指定一個(gè)類、可選的構(gòu)造參數(shù)值和屬性值。 除此之外可以通過配置"parentName"屬性來靈活地指定從一個(gè)父Bean定義中派生。   通常來說,使用GenericBeanDefinition類為了注冊一個(gè)用戶可見的bean定義(后置處理器可能會操作它, 甚至可能重新配置父母的名字)。如果父/子關(guān)系是預(yù)設(shè)的建議使用RootBeanDefinition / ChildBeanDefinition。

RootBeanDefinition

  RootBeanDefinition描述了Spring BeanFactory運(yùn)行時(shí)合并后的特定Bean定義。

  它可能來源于多個(gè)原始Bean定義(繼承自其他的bean定義,通常被注冊為GenericBeanDefinitions)。RootBeanDefinition從本質(zhì)上將是運(yùn)行時(shí)統(tǒng)一的Bean定義視圖。   在配置階段,RootBeanDefinition也可能用于注冊獨(dú)立的bean定義。然而,自從Spring2.5依賴,編程地注冊bean定義建議使用 GenericBeanDefinition類。GenericBeanDefinition在允許動態(tài)定義父依賴而不是硬編碼作為RootBeanDefinition方面有優(yōu)勢。

在抽象類AbstractBeanDefinition中添加了更多和bean屬性設(shè)置相關(guān)的處理操作。

@SuppressWarnings("serial")
public abstract class AbstractBeanDefinition extends BeanMetadataAttributeAccessor
		implements BeanDefinition, Cloneable {
	public static final String SCOPE_DEFAULT = "";
	public static final int AUTOWIRE_NO = AutowireCapableBeanFactory.AUTOWIRE_NO;
	public static final int AUTOWIRE_BY_NAME = AutowireCapableBeanFactory.AUTOWIRE_BY_NAME;
	public static final int AUTOWIRE_BY_TYPE = AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE;
	public static final int AUTOWIRE_CONSTRUCTOR = AutowireCapableBeanFactory.AUTOWIRE_CONSTRUCTOR;
	@Deprecated
	public static final int AUTOWIRE_AUTODETECT = AutowireCapableBeanFactory.AUTOWIRE_AUTODETECT;
	public static final int DEPENDENCY_CHECK_NONE = 0;
	public static final int DEPENDENCY_CHECK_OBJECTS = 1;
	public static final int DEPENDENCY_CHECK_SIMPLE = 2;
	public static final int DEPENDENCY_CHECK_ALL = 3;
	public static final String INFER_METHOD = "(inferred)";
	private volatile Object beanClass;
	private String scope = SCOPE_DEFAULT;
	private boolean abstractFlag = false;
	private boolean lazyInit = false;
	private int autowireMode = AUTOWIRE_NO;
	private int dependencyCheck = DEPENDENCY_CHECK_NONE;
	private String[] dependsOn;
	private boolean autowireCandidate = true;
	private boolean primary = false;
	private final Map<String, AutowireCandidateQualifier> qualifiers =
			new LinkedHashMap<String, AutowireCandidateQualifier>(0);
	private boolean nonPublicAccessAllowed = true;
	private boolean lenientConstructorResolution = true;
	private ConstructorArgumentValues constructorArgumentValues;
	private MutablePropertyValues propertyValues;
	private MethodOverrides methodOverrides = new MethodOverrides();
	private String factoryBeanName;
	private String factoryMethodName;
	private String initMethodName;
	private String destroyMethodName;
	private boolean enforceInitMethod = true;
	private boolean enforceDestroyMethod = true;
	private boolean synthetic = false;
	private int role = BeanDefinition.ROLE_APPLICATION;
	private String description;
	private Resource resource;
	.........//屬性處理代碼
}

BeanDefinition源碼

public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement {
	String SCOPE_SINGLETON = ConfigurableBeanFactory.SCOPE_SINGLETON;
	String SCOPE_PROTOTYPE = ConfigurableBeanFactory.SCOPE_PROTOTYPE;
	int ROLE_APPLICATION = 0;
	int ROLE_SUPPORT = 1;
	int ROLE_INFRASTRUCTURE = 2;
	String getParentName();
	void setParentName(String parentName);
	String getBeanClassName();
	void setBeanClassName(String beanClassName);
	String getFactoryBeanName();
	void setFactoryBeanName(String factoryBeanName);
	String getFactoryMethodName();
	void setFactoryMethodName(String factoryMethodName);
	String getScope();
	void setScope(String scope);
	boolean isLazyInit();
	void setLazyInit(boolean lazyInit);
	String[] getDependsOn();
	void setDependsOn(String... dependsOn);
	boolean isAutowireCandidate();
	void setAutowireCandidate(boolean autowireCandidate);
	boolean isPrimary();
	void setPrimary(boolean primary);
	ConstructorArgumentValues getConstructorArgumentValues();
	MutablePropertyValues getPropertyValues();
	boolean isSingleton();
	boolean isPrototype();
	boolean isAbstract();
	int getRole();
	String getDescription();
	String getResourceDescription();
	BeanDefinition getOriginatingBeanDefinition();
}

總結(jié)

簡單來說BeanDefinition接口及其實(shí)現(xiàn)類就是bean的所有配置信息的一個(gè)數(shù)據(jù)集合,從類名也可以看出其就是一個(gè)bean的定義說明。

到此這篇關(guān)于Spring的Bean注入解析結(jié)果BeanDefinition詳解的文章就介紹到這了,更多相關(guān)Bean注入解析結(jié)果BeanDefinition內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java自動生成編號的方法步驟

    Java自動生成編號的方法步驟

    在新增數(shù)據(jù)時(shí),往往需要自動生成編號,本文主要介紹了Java自動生成編號的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • SpringBoot與Dubbo整合的方式詳解

    SpringBoot與Dubbo整合的方式詳解

    這篇文章主要介紹了SpringBoot與Dubbo整合的方式詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • java批量插入數(shù)據(jù)的幾種方法

    java批量插入數(shù)據(jù)的幾種方法

    這篇文章主要給大家介紹了關(guān)于java批量插入數(shù)據(jù)的幾種方法,大家在Java項(xiàng)目中經(jīng)常會出現(xiàn)大量向數(shù)據(jù)庫中插入的情況,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Java中的數(shù)組復(fù)制(clone與arraycopy)代碼詳解

    Java中的數(shù)組復(fù)制(clone與arraycopy)代碼詳解

    這篇文章主要介紹了Java中的數(shù)組復(fù)制(clone與arraycopy)代碼詳解,本文并未全部介紹數(shù)組復(fù)制的幾種方式,僅對clone和copy的相關(guān)內(nèi)容進(jìn)行了解析,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 淺談SpringMVC中的session用法及細(xì)節(jié)記錄

    淺談SpringMVC中的session用法及細(xì)節(jié)記錄

    下面小編就為大家?guī)硪黄獪\談SpringMVC中的session用法及細(xì)節(jié)記錄。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • JpaRepository如何實(shí)現(xiàn)增刪改查并進(jìn)行單元測試

    JpaRepository如何實(shí)現(xiàn)增刪改查并進(jìn)行單元測試

    這篇文章主要介紹了JpaRepository如何實(shí)現(xiàn)增刪改查并進(jìn)行單元測試,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java中構(gòu)造方法set/get和toString的使用詳解

    Java中構(gòu)造方法set/get和toString的使用詳解

    這篇文章主要介紹了Java中構(gòu)造方法set/get和toString的使用詳解,構(gòu)造函數(shù)的最大作用就是創(chuàng)建對象時(shí)完成初始化,當(dāng)我們在new一個(gè)對象并傳入?yún)?shù)的時(shí)候,會自動調(diào)用構(gòu)造函數(shù)并完成參數(shù)的初始化,需要的朋友可以參考下
    2019-07-07
  • springboot中配置項(xiàng)目url的常見方法詳解

    springboot中配置項(xiàng)目url的常見方法詳解

    這篇文章主要為大家詳細(xì)介紹了springboot中配置項(xiàng)目url的兩個(gè)常見方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解下
    2025-11-11
  • Java IO流和文件操作實(shí)現(xiàn)過程解析

    Java IO流和文件操作實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Java IO流和文件操作實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Spring Boot2集成AOPLog來記錄接口訪問日志

    Spring Boot2集成AOPLog來記錄接口訪問日志

    這篇文章主要介紹了Spring Boot2集成AOPLog來記錄接口訪問日志,日志是一個(gè)Web項(xiàng)目中必不可少的部分,借助它我們可以做許多事情,比如問題排查、訪問統(tǒng)計(jì)、監(jiān)控告警等,需要的朋友可以參考下
    2019-06-06

最新評論

太湖县| 哈巴河县| 榆林市| 曲阳县| 花莲市| 鲁山县| 福泉市| 井陉县| 东山县| 若羌县| 满城县| 普陀区| 柘城县| 得荣县| 邯郸县| 望奎县| 汤阴县| 和林格尔县| 新余市| 巩义市| 西平县| 洪湖市| 巴东县| 太仆寺旗| 西和县| 克拉玛依市| 武夷山市| 漯河市| 沂水县| 龙江县| 北川| 阳泉市| 儋州市| 惠水县| 临江市| 昌都县| 怀集县| 永安市| 夹江县| 金溪县| 韶关市|