首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Spring XML 配置 Bean 完整指南:屬性注入、構造器注入、集合、p-namespace 與內部 Bean

     編輯:Java 綜合教學

Spring XML 配置 Bean 完整指南

一、屬性注入(Setter Injection)

透過 setXxx() 方法注入,要求類別有無參建構器。

<bean id="helloWorld" class="com.nucsoft.spring.HelloWorld">
  <property name="hello" value="spring"/>
  <property name="world">
    <value>spring</value>
  </property>
</bean>
  • name:屬性名(對應 setWorld)
  • value:字面值
  • ref:引用其他 Bean(與 value 互斥)

二、構造器注入

透過建構器參數注入,不推薦常用(參數多時可讀性差)。

<bean id="car" class="com.nucsoft.spring.Car">
  <constructor-arg name="brand" value="Audi"/>
  <constructor-arg index="0" value="BMW"/>
  <constructor-arg type="double" value="200000"/>
</bean>
  • name:參數名(需編譯時保留參數名 -parameters)
  • index:參數索引(從 0 開始)
  • type:參數類型(區分重載)

三、進階配置技巧

1. 特殊字元:CDATA

<property name="brand">
  <value><![CDATA[<BM>]]></value>
</property>

2. 引用外部 Bean:ref 屬性或 <ref> 標籤

<property name="service" ref="serviceBean"/>
<constructor-arg name="feather">
  <ref bean="featherBean"/>
</constructor-arg>

3. 內部 Bean(匿名、不可複用)

<property name="service">
  <bean class="com.nucsoft.spring.Service"/>
</property>

4. 注入 null 值

<constructor-arg name="feather">
  <null/>
</constructor-arg>

5. 級聯屬性注入

<property name="feather.length" value="23"/>

前提:feather 已注入且有 getFeather()。

四、集合屬性注入

集合類型XML 標籤
List / Array<list>
Set<set>
Map<map> + <entry>
Properties<props> + <prop key="">

List 範例(混合外部引用與內部 Bean)

<property name="departments">
  <list>
    <ref bean="dept1"/>
    <bean class="...Department">
      <property name="deptName" value="dept02"/>
    </bean>
  </list>
</property>

Map 範例

<property name="departments">
  <map>
    <entry key-ref="dept1" value-ref="emp1"/>
    <entry key="key01" value="value01"/>
  </map>
</property>

注意:<entry> 不支援內嵌 <bean>。

五、定義獨立集合 Bean(util schema)

<beans xmlns:util="https://www.springframework.org/schema/util" ...>
  <util:list id="departments">
    <bean class="...Department" p:deptName="dept01"/>
    <ref bean="dept2"/>
  </util:list>

  <bean id="company" class="...Company">
    <property name="departments" ref="departments"/>
  </bean>
</beans>

支援:util:list、util:set、util:map、util:properties。

六、p-namespace 簡化配置

<beans xmlns:p="https://www.springframework.org/schema/p" ...>
  <bean id="emp" class="...Employee" p:employeeName="emp" p:age="23"/>
</beans>

等同於 <property name="employeeName" value="emp"/>。

七、基於註解配置(預告)

下一篇將介紹 @Component、@Autowired、@Value、@Configuration 等註解驅動配置。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved