1. 程式人生 > >spring 配置時 bean id 與bean name 的區別

spring 配置時 bean id 與bean name 的區別

簡單的說:id用來標識bean,是唯一的,且只有一個;name定義的是bean的alias,可以有多個,並可能與其他的bean重名。

詳細的說:

id是唯一標識bean.不能用特殊字元:×#@ ,不能用數字開頭。在bean引用的時候只能用id指向你需要的bean;

name 可以用特殊字元,並且一個bean可以用多個名稱:name=“bean1,bean2,bean3”,用逗號隔開。

通過id和name都可以取出該Bean.

BeanFactory factory=new XmlBeanFactory(new ClassPathResource("config.xml"));

Dao dao=(Dao)factory.getBean("thisbean");

Dao dao1=(Dao)factory.getBean("bean1");

Dao dao2=(Dao)factory.getBean("bean2");     .........

       // 驗證是否指向同一個Bean 
          System.out.println((dao== dao1)); 
          System.out.println((dao1== dao2)); 
          // 輸出bean的別名 
          String[] thisbean= factory.getAliases("thisbean"); 
          for (String strbean: thisbean) { 
              System.out.println(strbean); 
          }

配置檔案中不允許出現兩個id相同的,否則在初始化時即會報錯;但配置檔案中允許出現兩個name相同的,在用getBean()返回例項時,後面一個Bean被返回,應該是前面那個被後面同名的 覆蓋了。有鑑於此,為了避免不經意的同名覆蓋的現象,儘量用id屬性而不要用name屬性。

如果id和name都沒有指定,則用類全名作為name,如,則你可以通過 
getBean("com.stamen.BeanLifeCycleImpl")返回該例項。

相關推薦

spring 配置 bean id bean name區別

簡單的說:id用來標識bean,是唯一的,且只有一個;name定義的是bean的alias,可以有多個,並可能與其他的bean重名。 詳細的說: id是唯一標識bean.不能用特殊字元:×#@ ,不能用數字開頭。在bean引用的時候只能用id指向你需要的bean;

spring配置檔案中classpathclasspath* 的區別

lib和classses下檔案訪問的優先順序 lib>classes 對於效能的影響不在這個裡面: classpath與classpath*區別 classpath:只會在你的classes的路徑中查詢檔案 classpath:不僅包含class路徑,還包含jar中的

Spring框架xml配置中屬性 ref value的區別

剛開始學Spring框架時並沒太關注這麼細小的區別,偶然一次配置xml時對同一個bean的引用,兩個不同的類屬性都用ref一個正確一個報了錯誤,當時覺得和不解。 後來看了引用物件的原始碼,才發現雖然引用的是同一個bean但兩個物件的屬相型別明顯不一樣,一個是物件引用型別,一

Spring框架xml配置中屬性refvalue的區別

mapper idt 明顯 nbsp www 技術分享 inf border 配置 1、spring批量掃描mybatis的mapper,使用value 2、spring管理mybatis的單個mapper,用的是ref 雖然引用的是同一個bean,但兩個對象的

Linux入門-網路配置-橋接模式NAT的區別

首先,在說到VMware的網路模型之前,先說一下VMware的幾個虛擬裝置:VMnet0:這是VMware用於虛擬橋接網路下的虛擬交換機; VMnet1:這是VMware用於虛擬Host-Only網路下的虛擬交換機; VMnet8:這是VMware用於虛擬NAT

Android使用Gradle依賴配置compile、implementationapi的區別介紹

前言 AndroidStudio升級到3.0之後,gradle版本也隨之升級到了3.0.0版本。 當gradle外掛升級到3.0.0及以上後,我們會發現在gradle中新增依賴的時候,會推薦你使用implementation或者api,而不再推薦你使用compile,今天

spring配置檔案中Bean中的idname區別

  1.id屬性命名必須滿足XML的命名規範,因為id其實是XML中就做了限定的。總結起來就相當於一個Java變數的命名:不能以數字,符號打頭,不能有空格,如123,?ad,"ab   "等都是不規範的,Spring在初始化時就會報錯,諸如:      程式碼    org

用intellij idea練習spring專案,aop程式設計報錯,Error creating bean with name '(inner bean)#3b0143d3' balbala之類的

程式設計環境,intellij idea 這個錯誤是因為沒有匯入Spring所依賴的AspectJ的jar包引起的,目前用到的,就是aspectjweaver.jar這個包, 最蛋痛的是spring官網下載的lib中並不提供這個依賴包,需要去AspectJ官網下載,連結如

Spring Boot專案啟動可以根據自定義配置決定初始化哪些Bean

讓Spring Boot專案啟動時可以根據自定義配置決定初始化哪些Bean 問題描述 實現思路 思路一 [不符合要求] 思路二[滿足要求] 思路三[未試驗] 問題描述 目前我工作環境下,後端主要的框架是

Spring配置檔案定義類idname區別

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3

DUBBO配置引發的一個問題--- DUPLICATE SPRING BEAN ID

1.原因    因專案業務需要,要呼叫RPC框架,專案原本已經依賴了很多RPC介面需要啟動時載入,所以準備做成啟動時不預載入。 就是在配置的時候加上check=false.   官方文件解釋的作用,就是Dubbo 預設會在啟動時檢查依賴的服務是否可用,不可用時會丟擲異常,阻止

struts2spring整合,關於class屬性及成員bean自動注入的問題

前幾天同事碰到一個問題:正常來說按照Spring官方配置,在struts2與spring整合時,struts配置檔案中class屬性指向spring配置的bean id,但是在class指向類路徑時,依然能注入service。 public class LoginActi

spring學習筆記(3)——bean配置細節註意

collect 1.5 之前 ice ble person name return 引用 1. 一個bean引用另外一個bean 當Person類中有一個屬性是Car,那麽該如何配置呢 person: package com.zj.spring; public class

通過Spring配置文件中bean中的property賦值

pla 綁定 cli 原因 對象賦值 art contex start nbsp 基本數據類型賦值-通過spring配置文件中bean中的property 擴展-以此方式可以通過配置為連接數據的屬性賦值 1、如果是基本數據類型,可以通過setter方法為對象中的屬性設置初始

spring boot: 一般註入說明(五) @Component, application event事件為BeanBean之間通信提供了支持

listen source 監聽 監聽器 nbsp lis 所有 fin 配置 spring的事件,為Bean與Bean之間通信提供了支持,當一個Bean處理完成之後,希望另一個Bean知道後做相應的事情,這時我們就讓另外一個Bean監聽當前Bean所發送的事件。 spri

spring AOP使用中Error creating bean with name ‘…’defined in class path resource..問題及其解決方法

factory fail 正常 ins aspect 工作內容 thread def before spring AOP使用中Error creating bean with name ‘…’defined in class path resource..問題及其解決方法

Spring(八):Spring配置Bean

兩種 exceptio 名稱 CA exception 通過 文件系統 publish 基礎 在Spring的IOC容器裏配置Bean 配置Bean形式:基於xml文件方式、基於註解的方式 在xml文件中通過bean節點配置bean: <?xml versi

Spring容器bean概要

com init 管理 pass XML efi AC pre color 容器:   通俗的理解容器就是用來管理bean和bean之間依賴的一個組件。很多參考資料說容器就是org.springframework.context.ApplicationContext,但筆者

Spring Configuration動態繫結bean id

簡述: 對於bean id 可能在注入的時候需要根據配置動態的制定例項 程式碼: ERepositoryConfigure.java package com.cpa.components.system.e.repository; import org.apache.com

Spring配置Bean

1.宣告bean 宣告配置一個bean有三種方式 在 XML 中顯式配置 在 Java 中顯式的配置 隱式的bean發現機制和自動裝配 1.1在 XML 中顯式配置 <?xml version="1.0" encoding="UTF-8"?&g