javascript
Spring框架如何加载和定义Spring Bean类?
本篇介紹什么是Spring Bean類,如何創建Bean類,以及如何將Bean類添加到Spring IOC容器。通過本篇的學習,可以達成如下目標。
● 認識Spring Bean類
● 掌握Bean類的配置項
● 將Bean類添加到Spring IOC容器
?
1、什么是Spring Bean類
Spring Bean是事物處理組件類和實體類(POJO)對象的總稱,Spring Bean被Spring IOC容器初始化,裝配和管理。
Spring Bean類包含事務處理組件和實體類(POJO)。在課程案例SpringProgram項目中,EmailNotice和PhoneNotice類屬于事務組件類,用于處理發送通知事務,包含事務處理代碼;Teacher類是實體類(POJO),僅包含實體屬性及其set和get方法。
Teacher類代碼如下。
?
Teacher類僅有兩個屬性:老師姓名(name)和上課時間(classtime)。方法getNotify()返回老師的上課時間。
?
EmailNotice類主要通過sendMessage()方法發送郵件給老師,因此該類依賴于老師類。sendMessage()是主要的事務處理方法。
?
2、Bean類的配置項
Spring IOC容器管理Bean時,需要了解Bean的類名、名稱、依賴項、屬性、生命周期及作用域等信息。為此,Spring IOC提供了一系列配置項,用于Bean在IOC容器中的定義。
① class
該配置項是強制項,用于指定創建Bean實例的Bean類的路徑。
② name
該配置項是強制項,用于指定Bean唯一的標識符,在基于 XML 的配置項中,可以使用 id和或 name 屬性來指定 Bean唯一 標識符。
③ scope
該配置項是可選項,用于設定創建Bean對象的作用域。
④ constructor-arg
該配置項是可選項,用于指定通過構造函數注入依賴數據到Bean。
⑤ properties
該配置項是可選項,用于指定通過set方法注入依賴數據到Bean。
⑥ autowiring mode
該配置項是可選項,用于指定通過自動依賴方法注入依賴數據到Bean。
⑦ lazy-initialization mode
該配置項是可選項,用于指定IOC容器延遲創建Bean,在用戶請求時創建Bean,而不要在啟動時就創建Bean。
⑧ initialization
該配置項是可選項,用于指定IOC容器完成Bean必要的創建后,調用Bean類提供的回調方法對Bean實例進一步處理。
⑨ destruction
該配置項是可選項,用于指定IOC容器在銷毀Bean時,調用Bean類提供的回調方法。
?
3、將Bean類添加到Spring IOC容器
將Bean類添加到Spring IOC容器有三種方式。一種方式是基于XML的配置文件;一種方式是基于注解的配置;一種方式是基于Java的配置。下面主要介紹基于XML的配置方式,基于注解和基于Java的配置放在后面進行討論,放在后面討論的原因是一些其它重要的Spring概念還需要掌握。
(1)XML配置文件的創建與存儲
項目創建后,需要手動創建Spring配置文件,Spring配置文件默認名稱是applicationContext.xml,也可以使用其它文件名稱代替。在課程案例SpringProgram項目中,Spring核心配置文件被命名為dispatcher.xml,存儲到src/config目錄,如下圖所示。
?
圖1 Spring配置文件在SpringProgram項
(2)Spring配置文件的加載
加載Spring的配置文件有多種方式,比較常用的是在web.xml加載配置文件。
① 使用ContextLoaderListener加載配置文件
如果配置文件名稱采用默認的applicationContext.xml,并且存存儲在WebContent/WEB-INF目錄下,在web.xml添加下述代碼。
?
ContextLoaderListener類在啟動Web容器時,自動加載Spring applicationContext.xml的配置信息。
② 加載自命名的配置文件
Spring配置文件名稱若沒有采用applicationContext.xml,而是采用其它名稱,如dispatcher.xml,文件依然存儲到WebContent/WEB-INF目錄下時,可在web.xml添加下述代碼。
?
param-name標簽用于設置配置文件的存儲位置,ContextLoaderListener從該存儲位置讀取配置文件。
③ 通過配置目錄加載配置文件
企業級別的Web項目,配置文件比較多。不僅有Spring的配置文件,也包括其它框架的配置文件。將配置文件集中起來并存儲到一個特定目錄下進行綜合管理,是開發大型項目常用的方法。課程案例SpringProgram項目中,Spring核心配置文件被命名為dispatcher.xml,存儲到src/config目錄。在這種情況下,需要在web.xml添加下述代碼。
?
<context-param>標簽用來聲明整個WEB項目內的上下文初始化參數。<param-name>標簽指定初始化參數名稱,<param-value>指定初始化參數的值。在web.xml配置的監聽器類可以通過上下文環境獲取指定參數名稱的值。
例如課程案例代碼:
?
代碼使用上下文ServletContext類調用getInitParameter獲取指定參數名稱的值(String配置文件的存儲位置),然后使用ClassPathXmlApplicationContext類讀取配置文件到ApplicationContext對象。這里的classpath是指 WEB-INF文件夾下的classes目錄。
(3)在Spring配置文件中定義Bean
已創建的Bean類需要在Spring配置文件中進行定義,Spring IOC容器才能對Bean進行組配和管理。
課程案例Teacher類在Spring配置文件定義的代碼如下。
?
<bean>標簽用于定義Bean,各屬性說明如下:
① id:Bean的唯一標識,ApplicationContext對象可以通過id獲取該Bean的實例。
② calss:Bean類的存儲路徑。
<property>標簽用于從外部注入Bean的屬性值, <property>標簽各屬性說明如下:
① name:Bean類的屬性名稱。
② value:name所值屬性的值。
課程案例EmailNotice類在Spring配置文件定義的代碼如下。
?
EmailNotice類的<bean>標簽相對Teacher類來說,多了p:teacher-ref屬性,該屬性用于對Bean內部的對象屬性進行注入,格式為:
P: 屬性名 = 注入的對象
?
課程小結
項目中的事務處理組件和實體類(POJO)可以作為Bean類,Bean類需要在Spring配置文件中進行定義,才能被IOC容器管理和組配。Spring IOC容器管理Bean時,需要了解Bean的類名、名稱、依賴項、屬性、生命周期及作用域等信息。為此,Spring IOC提供了一系列配置項,用于Bean在IOC容器中的定義。
總結
以上是生活随笔為你收集整理的Spring框架如何加载和定义Spring Bean类?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【形式语言与自动机】图灵机
- 下一篇: gradle idea java ssm