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

Spring 配置 JdbcTemplate:p 命名空間與 property 標籤的正確用法差異

     編輯:程式設計綜合問答

Spring XML 配置中為 JdbcTemplate 注入 DataSource,兩種寫法行為不同:

寫法 1:p 命名空間 (正確、簡潔)

<beans xmlns:p="https://www.springframework.org/schema/p" ...>
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" 
          p:dataSource-ref="dataSource"/>
  • p:dataSource-ref 直接映射到 setDataSource(DataSource) setter 方法。
  • 屬性名 dataSource 對應 JavaBean 規約 (去掉 set、首字母小寫)。
  • 需在 <beans> 根元素引入 xmlns:p。

寫法 2:巢狀 <ref> 標籤 (錯誤)

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <ref name="dataSource">dataSource</ref> <!-- 錯誤語法 -->
</bean>
  • <ref> **不能** 作為 <bean> 的直接子元素用於屬性注入。
  • Spring Schema 規定 <bean> 子元素只能是 constructor-arg、property、qualifier 等,ref 僅能作為它們的屬性值或子元素。

正確的傳統 property 寫法

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"/>
</bean>
  • name="dataSource" 對應 setter 方法。
  • ref="dataSource" 引用容器中同名 Bean。

總結

寫法正確性推薦度
p:dataSource-ref="dataSource"✓★★★★★ 簡潔、可讀
<property name="dataSource" ref="dataSource"/>✓★★★★ 標準、通用
<ref name="dataSource">...</ref>✗ Schema 違規不可用

優先使用 p 命名空間,代碼更乾淨;複雜注入 (如集合、嵌套 Bean) 再用 <property>。

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