<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                每個Bean都有一個或者更多的標識符,這些標識符在容器中是唯一的。一般一個Bean只有一個標識符,如果需要更多的標識符,可以考慮使用別名。 在基于XML的配置元數據中,可以通過`id`或者`name`屬性指定Bean的標識符。`id`屬性允許你明確指定唯一值,通常會以字母和數字的組合來指定標識符的值('myBean','fooService'等等),但是使用特定的字符也是可以的。如果你想為Bean定義別名,可以通過`name`屬性指定,多個別名用逗號、分號或者空格分隔。在Spring的歷史版本記錄中,Spring3.1之前,`id`屬性被定義為`xsd:ID`類型,使得id的取值受到了限制。之后的版本中被定義為`xsd:string`類型,Bean的id屬性的唯一性由容器來強制執行,不在使用XML解析器。 你不需要為Bean顯式提供`id`和`name`屬性值,如果你未提供的話,容器會為Bean生成唯一的name值。然而,如果你要通過其它Bean的`name`屬性來引用Bean,可以通過`ref`屬性或者Service Locator風格查找,這必須提供name。如果想不提供name來完成Bean的引用,可以使用內部Bean和依賴注入合作者([1.4.2.依賴和配置詳情](1.4.2.依賴和配置詳情.md))。 > :-: **Bean的命名約定** > > Spring使用的是Java標準的命名規范,也就是以小寫字母開頭的駝峰命名方式。例如 :`accountManager`、`accountService`、 `userDao`、`loginController`等等。命名的一致性使得你的配置更易閱讀和理解。當你使用Spring AOP時,通過指定Bean的name值將通知關聯到對應的Bean也是很有幫助的。 > 在類路徑中進行組件掃描時,Spring會為未命名的Bean生成一個小寫字母開頭的name值。然而,在特殊情況下,如果有多個字符,并且第一個和第二個字符都是大寫,則保留原始大小寫。Spring是通過`java.beans.Introspector.decapitalize`方法來實現的,該實現如下: > > ~~~ > public static String decapitalize(String name) { > if (name == null || name.length() == 0) { > return name; > } > > //如果類名的第一個和第二個字母都是大寫,直接將類名作為Bean的name值。 > if (name.length() > 1 && Character.isUpperCase(name.charAt(1)) && > Character.isUpperCase(name.charAt(0))){ > return name; > } > > //將類名的首字母小寫后作為Bean的name值。 > char chars[] = name.toCharArray(); > chars[0] = Character.toLowerCase(chars[0]); > return new String(chars); > } > ~~~ ***** ### **在Bean定義外為其指定別名** 在Bean定義的內部,可以通過將`id`和`name`屬性的組合來使得一個Bean有多個標識符,其中id的值只有一個,name是數量任意的。一個Bean的別名之間都是等價的,這在一些場景下是有用的。比如:在一個應用中,你可以通過Bean的別名來讓每個組件引用公共的依賴。 在定義Bean時指定所有別名往往是不夠的,值得高興的是可以在其它地方指定。這種用法通常出現在將配置拆分在每個子系統的大系統中,每一個子系統都有他自己的一套對象的定義。在基于XML的配置元數據中,你可以使用`<alias/>`來定義別名。 ~~~ <alias name="fromName" alias="toName"/> ~~~ 在這個例子中,name為`fromName`的bean也被稱為`toName`,其它Bean可以通過`toName`去引用它。 舉個具體的例子: 子系統A在配置元數據中引用了name為`subsystemA-dataSource`的Bean, 子系統B在配置元數據中引用了name為`subsystemB-dataSource`的Bean,當將子系統組合成主系統時,主系統可能會通過name為`myApp-dataSource`的DataSource。為了讓三個name引用的是同一個Bean,你可以在主應用中添加如下別名定義: ~~~ <alias name="subsystemA-dataSource" alias="subsystemB-dataSource"/> <alias name="subsystemA-dataSource" alias="myApp-dataSource" /> ~~~ 如此一來,每個組件和主應用都可以通過不同的`name`引用同一個的`DataSource`,也不會和其他Bean的`name`沖突。 > ##### 使用Java配置 > @Bean注解也可以為Bean指定別名,詳情參見:[1.12.3.使用@Bean注解](1.12.3.使用Bean注解.md)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看