概述
在Spring框架中, 標簽用于定義和配置 Spring 容器管理的對象(即 bean)。 標簽有許多屬性,每個屬性都用來配置 bean 的特定方面。下面是一些主要屬性及其默認值的詳細說明。
屬性
1 id
說明: 用于標識 bean 的唯一標識符。
默認值: 如果未指定 id,Spring 將自動生成一個唯一標識符。
2 name
說明: 為 bean 指定別名,可以使用逗號、分號或空格分隔的別名列表。
默認值: 無默認值,如果未指定,bean 只有一個標識符。
3 class
說明: 指定 bean 的類的全限定名。
默認值: 無默認值,必須指定。
4 scope
說明: 指定 bean 的作用域。
默認值: singleton。可選值有 singleton, prototype, request, session, globalSession, application, websocket。
singleton
說明: 在整個 Spring 容器中,bean 只有一個共享的實例。每次請求該 bean 時,都會返回同一個實例。
用例: 適用于無狀態的服務對象。
默認值: 如果未指定 scope,默認是 singleton。
prototype
說明: 每次請求該 bean 時,都會創建一個新的實例。即使是同一個 bean,調用兩次也會得到兩個不同的實例。
用例: 適用于有狀態的 bean,或者每次需要全新實例的場景。
request
說明: 在 web 應用程序中,每個 HTTP 請求都會創建一個新的 bean 實例,并且該實例僅在當前 HTTP 請求內有效。
用例: 適用于需要基于 HTTP 請求的數據或狀態的 bean。
使用限制: 只能在 web 應用程序中使用。
session
說明: 在 web 應用程序中,每個 HTTP session 都會創建一個新的 bean 實例,并且該實例僅在當前 HTTP session 內有效。
用例: 適用于需要基于 HTTP session 的數據或狀態的 bean。
使用限制: 只能在 web 應用程序中使用。
globalSession
說明: 在 web 應用程序中,每個全局 HTTP session(通常用于 Portlet 應用程序)會創建一個新的 bean 實例,并且該實例僅在當前全局 HTTP session 內有效。
用例: 適用于需要基于全局 HTTP session 的數據或狀態的 bean。
使用限制: 主要用于 Portlet 應用程序。
application
說明: 在 web 應用程序中,每個 ServletContext 會創建一個新的 bean 實例,并且該實例僅在當前 ServletContext 內有效。
用例: 適用于需要在整個 web 應用程序范圍內共享的 bean。
websocket
說明: 在 WebSocket 應用程序中,每個 WebSocket 會話會創建一個新的 bean 實例,并且該實例僅在當前 WebSocket 會話內有效。
用例: 適用于需要基于 WebSocket 會話的數據或狀態的 bean。
使用限制: 只能在支持 WebSocket 的應用程序中使用。
5 lazy-init
說明: 指定是否延遲初始化 bean。
默認值: false。如果設置為 true,bean 會在第一次請求時初始化,而不是容器啟動時。
6 autowire
說明: 指定 bean 的自動裝配模式。
默認值: no。可選值有 no, byName, byType, constructor, autodetect。
7 init-method
說明: 指定初始化方法的名稱,該方法將在 bean 屬性設置完畢后調用。
默認值: 無默認值,必須顯式指定。
8 destroy-method
說明: 指定銷毀方法的名稱,該方法將在容器銷毀 bean 時調用。
默認值: 無默認值,必須顯式指定。
9 factory-method
說明: 指定一個靜態工廠方法來創建 bean 實例。
默認值: 無默認值,必須顯式指定。
10 factory-bean
說明: 指定一個現有的 bean 用于創建此 bean 實例。
默認值: 無默認值,必須顯式指定。
11 primary
說明: 指定在自動裝配時,若有多個候選者,此 bean 是否作為首選項。
默認值: false。
12 depends-on
說明: 指定當前 bean 所依賴的一個或多個 bean 的名稱,這些 bean 將在當前 bean 初始化之前初始化。
默認值: 無默認值,必須顯式指定。
13 abstract
說明: 指定 bean 是否為抽象類。抽象 bean 本身不會被實例化,只能用作父類。
默認值: false。
14 autowire-candidate
說明: 指定此 bean 是否可以作為其他 bean 自動裝配的候選者。
默認值: true。
示例
以下是一個示例 bean 標簽的定義,展示了如何使用這些屬性:
<bean id="exampleBean" class="com.example.MyClass"scope="singleton" lazy-init="true" autowire="byName"init-method="init" destroy-method="cleanup"factory-method="createInstance" factory-bean="myFactoryBean"primary="true" depends-on="otherBean" abstract="false"autowire-candidate="true">
</bean>
通過上述屬性的配置,Spring 能夠根據需要創建、初始化、裝配和銷毀 bean 實例。