Struts2 <Bean>元素:定義及範例化Bean元件

2020-07-16 10:04:55
在 Struts2 的核心架構中,引入了 Spring 的先進思想,通過 IoC 容器對 JavaBean 元件進行管理,而不是通過寫死的方式來組織這些物件。

通過 IoC 容器來管理 Struts2 的核心元件,可以使用 Struts2 框架成為高度擴充套件、更靈活的 Web 應用框架,因為開發者可以通過 IoC 容器來自由組織 Struts2 框架中的元件,還可以根據不同的業務邏輯需要,通過 IoC 容器將自己編寫的 JavaBean 注入 Struts2 框架中。對於開發者而言,應用 Struts2 框架的 IoC 容器具有無限的擴充套件性。在 Struts2 中,相對於組態檔的其他元素而言,使用 <bean> 元素定義及範例化 Bean 元件。

語法:

<struts>
  <bean class="url" name="name"/>
  <bean type="value" name="name" class="url"/>
  ……
</struts>


<bean> 元素的屬性較多,如表所示。

<bean> 元素屬性及說明
屬性 說明
name 用於設定Bean範例的名稱,其他地方通過此名稱參照Bean範例
class 用於設定Bean的類名指定Bean範例是哪一個物件。此屬性是必須設定的屬性
type 指定Bean的實現介面,說明Bean是哪一個介面的實現類
scope 設定Bean的作用範圍
static 是否使用靜態方法注入
optional 是否是一個可選Bean

範例

通常情況下,在 Struts2 的組態檔中不需要自定義 Bean,這是因為在 struts-default.xml 檔案中 Struts2 已經定義了這些物件。開啟 Struts2 核心 Jar 包中的 struts-default.xml 檔案,可以看到 Struts2 設定的 Bean 物件,其部分程式碼如下:
<struts>
  <bean class="com.opensymphony.xwork2.ObjectFactory" name="xwork"/>
  <bean type="com.opensymphony.xwork2.ObjectFactory" name="struts" class="org.apache.struts2.impl.StrutsObjectFactory"/>
  <bean type="com.opensymphony.xwork2.ActionProxyFactory" name="xwork" class="com.opensymphony.xwork2.DefaultActionProxyFactory"/>
  <bean type="com.opensymphony.xwork2.ActionProxyFactory" name="struts" class="org.apache.struts2.impl.StrutsActionProxyFactory"/>
  ……
</struts>
上述程式碼是 struts-default.xml 檔案中定義的部分 Bean 物件,既然 Struts2 已經定義這些物件,就可通過繼承 struts-default.xml 檔案,使我們所編寫的組態檔具有這些物件,從而減少設定程式碼量。