spring如何生成beanName的詳解

2021-06-29 00:18:46 字數 2420 閱讀 1043

用了一年的spring,該系列的博文會有點偏總結吧

這篇文章主要講的是spring 裡的bean名稱是如何產生的

class="com.zw.aop.test.myadvice"

id="myadvice">

bean>

@service

//@component

public

class

cachelockprocessor

@configurable

public

class

factory

}

本片文章主要是針對第一第二種場景:直接看spring原始碼是如何處理的:首先是看spring是如何讀配置檔案xml配置檔案的bean的
public beandefinitionholder parsebeandefinitionelement(element ele, beandefinition containingbean) 

string beanname = id;

if (!stringutils.hastext(beanname) && !aliases.isempty())

}if (containingbean == null)

abstractbeandefinition beandefinition = parsebeandefinitionelement(ele, beanname, containingbean);

if (beandefinition != null)

else

}if (logger.isdebugenabled())

}catch (exception ex)

}string aliasesarray = stringutils.tostringarray(aliases);

return

new beandefinitionholder(beandefinition, beanname, aliasesarray);

}return

null;

}

if (containingbean != null)
public

static string generatebeanname(

beandefinition definition, beandefinitionregistry registry, boolean isinnerbean)

throws beandefinitionstoreexception

else

if (definition.getfactorybeanname() != null)

}if (!stringutils.hastext(generatedbeanname))

string id = generatedbeanname;

if (isinnerbean)

else

}return id;

}

given bean definition will be registered

* as inner bean or

as top-level bean (allowing for special name generation

* for inner beans versus top-level beans)

string org.springframework

.beans

.factory

.support

.beandefinitionreaderutils

.generated_bean_name_separator = "#"

id =generatedbeanname + generated_bean_name_separator + counter;
*/

public

class

annotationbeannamegenerator

implements

beannamegenerator

}// fallback: generate a unique default bean name.

return builddefaultbeanname(definition);

}

protected string builddefaultbeanname(beandefinition definition)
直接由spring來進行建立,也就是類的名稱,第乙個字母該為小寫

接下來的博文會繼續介紹spring的原始碼,歡迎有興趣的同學進行討論

如何生成keystore

1,執行命令 keytool keystore azkaban.keystore alias jetty genkey keyalg rsa alias android.keystore 生成的keystore別名 keyalg rsa 加密和數字簽名的演算法 validity 1000 有效天數 ...

如何生成uimage

vmlinux是核心檔案,zimage是一般情況下預設的壓縮核心映像檔案,壓縮vmlinux,加上一段解壓啟動 得到。而uimage則是使用工具mkimage對普通的壓縮核心映像檔案 zimage 加工而得。它是uboot專用的映像檔案,它是在zimage之前加上乙個長度為64位元組的 頭 說明這個...

新手如何配置spring

這裡以4.2為例子 spring framework 4.2.1.release dist.zip 如果你只需要基本的beans ioc aop context 這四個spring的核心包 spring的其他包為企業應用擴充套件包 另外說明 spring需要依賴apache的common loggi...