鍍金池/ 教程/ Java/ Bean 定義
Spring MVC Hello World 例子
事務(wù)管理
JDBC 框架概述
MVC 框架教程
Spring 自動(dòng)裝配 ‘byName’
Spring 中的自定義事件
Spring 編程式事務(wù)管理
環(huán)境設(shè)置
概述
Spring 中 SQL 的存儲(chǔ)過(guò)程
體系結(jié)構(gòu)
Spring 中的事件處理
Spring 靜態(tài)頁(yè)面例子
基于注解的配置
依賴注入
Spring 自動(dòng)裝配 ‘byType’
Spring 由構(gòu)造函數(shù)自動(dòng)裝配
Spring @Qualifier 注釋
Spring ApplicationContext 容器
Spring 中基于 AOP 的 XML架構(gòu)
Bean 的生命周期
IoC 容器
注入內(nèi)部 Beans
Spring JDBC 示例
Spring 基于構(gòu)造函數(shù)的依賴注入
Spring @Required 注釋
Hello World 實(shí)例
Bean 定義
Sping 的 BeanFactory 容器
Spring 頁(yè)面重定向例子
Bean 定義繼承
Spring 中基于 AOP 的 @AspectJ
注入集合
Beans 自動(dòng)裝配
Spring 異常處理例子
Spring 聲明式事務(wù)管理
Spring @Autowired 注釋
基于 Java 的配置
Spring MVC 表單處理例子
Spring——Bean 后置處理器
使用 Log4J 記錄日志
Spring 基于設(shè)值函數(shù)的依賴注入
Spring JSR-250 注釋
Bean 的作用域
Spring 框架的 AOP

Bean 定義

被稱作 bean 的對(duì)象是構(gòu)成應(yīng)用程序的支柱也是由 Spring IoC 容器管理的。bean 是一個(gè)被實(shí)例化,組裝,并通過(guò) Spring IoC 容器所管理的對(duì)象。這些 bean 是由用容器提供的配置元數(shù)據(jù)創(chuàng)建的,例如,已經(jīng)在先前章節(jié)看到的,在 XML 的表單中的 定義。

bean 定義包含稱為配置元數(shù)據(jù)的信息,下述容器也需要知道配置元數(shù)據(jù):

  • 如何創(chuàng)建一個(gè) bean

  • bean 的生命周期的詳細(xì)信息

  • bean 的依賴關(guān)系

上述所有的配置元數(shù)據(jù)轉(zhuǎn)換成一組構(gòu)成每個(gè) bean 定義的下列屬性。

屬性 描述
class 這個(gè)屬性是強(qiáng)制性的,并且指定用來(lái)創(chuàng)建 bean 的 bean 類。
name 這個(gè)屬性指定唯一的 bean 標(biāo)識(shí)符。在基于 XML 的配置元數(shù)據(jù)中,你可以使用 ID 和/或 name 屬性來(lái)指定 bean 標(biāo)識(shí)符。
scope 這個(gè)屬性指定由特定的 bean 定義創(chuàng)建的對(duì)象的作用域,它將會(huì)在 bean 作用域的章節(jié)中進(jìn)行討論。
constructor-arg 它是用來(lái)注入依賴關(guān)系的,并會(huì)在接下來(lái)的章節(jié)中進(jìn)行討論。
properties 它是用來(lái)注入依賴關(guān)系的,并會(huì)在接下來(lái)的章節(jié)中進(jìn)行討論。
autowiring mode 它是用來(lái)注入依賴關(guān)系的,并會(huì)在接下來(lái)的章節(jié)中進(jìn)行討論。
lazy-initialization mode 延遲初始化的 bean 告訴 IoC 容器在它第一次被請(qǐng)求時(shí),而不是在啟動(dòng)時(shí)去創(chuàng)建一個(gè) bean 實(shí)例。
initialization 方法 在 bean 的所有必需的屬性被容器設(shè)置之后,調(diào)用回調(diào)方法。它將會(huì)在 bean 的生命周期章節(jié)中進(jìn)行討論。
destruction 方法 當(dāng)包含該 bean 的容器被銷毀時(shí),使用回調(diào)方法。它將會(huì)在 bean 的生命周期章節(jié)中進(jìn)行討論。

Spring 配置元數(shù)據(jù)

Spring IoC 容器完全由實(shí)際編寫的配置元數(shù)據(jù)的格式解耦。有下面三個(gè)重要的方法把配置元數(shù)據(jù)提供給 Spring 容器:

  • 基于 XML 的配置文件。

  • 基于注解的配置

  • 基于 Java 的配置

你已經(jīng)看到了如何把基于 XML 的配置元數(shù)據(jù)提供給容器,但是讓我們看看另一個(gè)基于 XML 配置文件的例子,這個(gè)配置文件中有不同的 bean 定義,包括延遲初始化,初始化方法和銷毀方法的:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

   <!-- A simple bean definition -->
   <bean id="..." class="...">
       <!-- collaborators and configuration for this bean go here -->
   </bean>

   <!-- A bean definition with lazy init set on -->
   <bean id="..." class="..." lazy-init="true">
       <!-- collaborators and configuration for this bean go here -->
   </bean>

   <!-- A bean definition with initialization method -->
   <bean id="..." class="..." init-method="...">
       <!-- collaborators and configuration for this bean go here -->
   </bean>

   <!-- A bean definition with destruction method -->
   <bean id="..." class="..." destroy-method="...">
       <!-- collaborators and configuration for this bean go here -->
   </bean>

   <!-- more bean definitions go here -->

</beans>

你可以查看 Spring Hello World 實(shí)例 來(lái)理解如何定義,配置和創(chuàng)建 Spring Beans。

關(guān)于基于注解的配置將在一個(gè)單獨(dú)的章節(jié)中進(jìn)行討論。刻意把它保留在一個(gè)單獨(dú)的章節(jié),是因?yàn)槲蚁胱屇阍陂_(kāi)始使用注解和 Spring 依賴注入編程之前,能掌握一些其他重要的 Spring 概念。