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

Spring 入門(六):Setter 注入 null 值配置技巧

     編輯:Java 相關知識

場景

需要顯式將 Bean 屬性設置為 null,而非不注入(保持默認值)或注入字符串 "null"。

實體類

public class MemberBean {
    public String name;
    public Member member; // 自定義類型
    public void setName(String name) { this.name = name; }
    public void setMember(Member member) { this.member = member; }
}

public class Member { } // 空類

XML 配置關鍵:<null/> 元素

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="https://www.springframework.org/schema/beans"
       xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="https://www.springframework.org/schema/beans
       https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="memberBean" class="www.csdn.spring.constructor.bean.MemberBean">
        <!-- 注入 null 值,而非字符串 "null" -->
        <property name="name">
            <null/>
        </property>
        <property name="member">
            <null/>
        </property>
    </bean>

</beans>

測試驗證

public class MemberTest {
    @Test
    public void testBean() {
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-null.xml");
        MemberBean bean = context.getBean("memberBean", MemberBean.class);
        System.out.println(bean.name);   // 輸出: null
        System.out.println(bean.member); // 輸出: null
    }
}

關鍵區別

應用場景

  • 覆蓋父 Bean/默認配置中的非 null 值
  • 顯式表達「無值」語義,區別於「未配置」
  • 測試驗證 null 行為
  • 與 @Nullable、Optional 配合表達領域模型

一個 <null/> 標籤,精準表達「有值且為空」的語義。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
配置效果
<property name="x"><null/></property>屬性 x = null (Java null)
<property name="x" value="null"/>屬性 x = "null" (字符串)
無 property 元素屬性保持默認值 (基本類型 0/false,引用類型 null)