亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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)工廠方法已經(jīng)指定了,那么將覆蓋父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獲取http和https協(xié)議返回的json數(shù)據(jù)

    Java獲取http和https協(xié)議返回的json數(shù)據(jù)

    本篇文章主要介紹了Java獲取http和https協(xié)議返回的json數(shù)據(jù) ,本篇文章提供兩個方法,幫助各位如何獲取http和https返回的數(shù)據(jù)。有興趣的可以了解一下。
    2017-01-01
  • SpringBoot開發(fā)技巧啟動時配置校驗實現(xiàn)示例

    SpringBoot開發(fā)技巧啟動時配置校驗實現(xiàn)示例

    這篇文章主要為大家介紹了SpringBoot開發(fā)在啟動時自動配置校驗的實現(xiàn)示例及原理解析,有需要的朋友可以借鑒參考下希望能夠有所幫助
    2021-10-10
  • idea 無法debug調試的解決方案

    idea 無法debug調試的解決方案

    這篇文章主要介紹了idea 無法debug調試的解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • 淺析java 希爾排序(Shell)算法

    淺析java 希爾排序(Shell)算法

    這篇文章主要介紹了淺析java 希爾排序(Shell)算法的原理以及示例,需要的朋友可以參考下
    2015-02-02
  • springboot整合dubbo設置全局唯一ID進行日志追蹤的示例代碼

    springboot整合dubbo設置全局唯一ID進行日志追蹤的示例代碼

    這篇文章主要介紹了springboot整合dubbo設置全局唯一ID進行日志追蹤,本文通過圖文示例相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Spring系列中的beanFactory與ApplicationContext

    Spring系列中的beanFactory與ApplicationContext

    這篇文章主要介紹了Spring系列中的beanFactory與ApplicationContext,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • SpringMVC Mybatis配置多個數(shù)據(jù)源并切換代碼詳解

    SpringMVC Mybatis配置多個數(shù)據(jù)源并切換代碼詳解

    這篇文章主要介紹了SpringMVC Mybatis配置多個數(shù)據(jù)源并切換代碼詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • 快速理解spring中的各種注解

    快速理解spring中的各種注解

    這篇文章主要介紹了快速理解spring中的各種注解,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12
  • 有關ServletConfig與ServletContext的訪問

    有關ServletConfig與ServletContext的訪問

    下面小編就為大家?guī)硪黄嘘PServletConfig與ServletContext的訪問。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • java中抽象類、抽象方法、接口與實現(xiàn)接口實例詳解

    java中抽象類、抽象方法、接口與實現(xiàn)接口實例詳解

    這篇文章主要給大家介紹了關于java中抽象類、抽象方法、接口與實現(xiàn)接口的相關資料,文中通過示例代碼將四者介紹的非常詳細,并且簡單介紹了抽象類和接口的區(qū)別,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2017-11-11

最新評論