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

Spring的Bean注入解析結果BeanDefinition詳解

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

Bean注入解析結果BeanDefinition

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

BeanDefinition的接口的結構類圖:

ChildBeanDefinition

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

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

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

GenericBeanDefinition

  GenericBeanDefinition是一個定義標準的bean定義的一站式服務。

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

RootBeanDefinition

  RootBeanDefinition描述了Spring BeanFactory運行時合并后的特定Bean定義。

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

在抽象類AbstractBeanDefinition中添加了更多和bean屬性設置相關的處理操作。

@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();
}

總結

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

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

相關文章

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

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

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

    SpringBoot與Dubbo整合的方式詳解

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

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

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

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

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

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

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

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

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

    Java中構造方法set/get和toString的使用詳解

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

    springboot中配置項目url的常見方法詳解

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

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

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

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

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

最新評論

昭平县| 苏尼特右旗| 淳安县| 临沂市| 雅安市| 河池市| 老河口市| 洛川县| 渭源县| 灵石县| 丰台区| 阳泉市| 呼和浩特市| 宣汉县| 叙永县| 措美县| 江油市| 宜黄县| 绥芬河市| 怀来县| 保亭| 巍山| 临高县| 荆州市| 明溪县| 五寨县| 大姚县| 大冶市| 盘山县| 奇台县| 屯昌县| 印江| 蓬莱市| 怀仁县| 泰州市| 嘉兴市| 措勤县| 巴彦淖尔市| 石屏县| 育儿| 安阳县|