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

Spring IOC 深度解析(二):Bean 基礎配置最佳實踐

     編輯:Java 相關知識

前言

承上篇 Spring IOC 概述,本文結合實戰經驗講解 Bean 在配置文件中的基礎配置技巧,旨在使結構更合理、編寫量更少。內容適合能讀懂基本 Bean 配置的開發者,歡迎討論指正。

最基礎的 Bean 配置

<bean id="bean_test" class="cn.qtone.test.HelloWorld"/>

等同於 HelloWorld tmp = new HelloWorld();,但 Spring 容器中為單例(預設 scope="singleton"),非傳統單態模式。需原型模式每次新建實例:

<bean id="bean_test" class="cn.qtone.test.HelloWorld" scope="prototype"/>

Web 環境還支援 request、session 作用域。多線程環境下單例是否安全需謹慎評估。

構造器注入

無無參構造器時需聲明構造參數:

<bean id="bean_test" class="cn.qtone.test.HelloWorld" scope="prototype">
    <constructor-arg><value>hello</value></constructor-arg> <!-- 單參構造 -->
</bean>

多參構造器建議用 index 明確位置,避免歧義:

<bean id="bean_date" class="java.util.Date"/>
<bean id="bean_test" class="cn.qtone.test.HelloWorld" scope="prototype">
    <constructor-arg index="0" ref="bean_date"/>
    <constructor-arg index="1"><value>345</value></constructor-arg>
</bean>

Spring 會自動類型轉換(如字符串轉 int)。不建議使用自動依賴查找(autowire),會降低配置可讀性。

工廠模式實例化 Bean

靜態工廠方法

<bean id="bean_string" class="cn.qtone.test.TestFactory" factory-method="getBean"/>

對應 public static Object getBean() { return "hello world"; }。工廠類不被實例化。可配合 constructor-arg 傳參。

實例工廠方法

需兩個 Bean 定義:工廠 Bean 與目標 Bean。

<bean id="bean_factory" class="cn.qtone.test.TestBeanFactory"/>
<bean id="bean_helloWorld" factory-bean="bean_factory" factory-method="getHello"/>

Spring 先實例化 TestBeanFactory,再調用實例方法 getHello() 獲取 Bean。對應 public HelloWorld getHello() { return new HelloWorld(); }。

Setter 注入(屬性注入)

推薦方式,清晰可讀:

<bean id="bean_test" class="cn.qtone.test.HelloWorld">
    <property name="hello" value="你好!"/>
    <property name="world" value="世界"/>
    <property name="date" ref="bean_date"/>
</bean>

對應 JavaBean 規范的 Setter:setHello(String)、setWorld(String)、setDate(Date)。屬性名首字母大小寫不敏感,其餘嚴格區分。Setter 注入優勢:通過名稱直觀知曉注入內容與語義,Spring 官方推薦。

構造器注入適用場景:希望注入對象不可被外部修改(不可變對象)。

總結與展望

本文涵蓋 Bean 實例化(構造器、靜態/實例工廠)與屬性注入基礎配置。下篇將探討 Bean 繼承、抽象等進階配置技巧。

原文出處:https://j2ee.blog.sohu.com/63886545.html

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