成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring中的BeanFactory定義Bean

開發 后端
本文介紹Spring中的BeanFactory,以及XmlBeanFactory中的Bean定義包括的內容等。

Spring的依賴注入容器的核心是Bean工廠。Bean工廠負責管理組件和它們之間的依賴關系。一般說來,你的Beans應該遵守JavaBeans 規范,但是這不是必須的,如果使用構造器依賴注入來連接的Beans的時候,就沒有遵守Beans規范(Beans規范中的javabean構造函數沒有參數)。

一個BeanFactory可以用接口org.springframework.beans.factory.BeanFactory表示, 這個接口有多個實現。最常使用的的簡單的beanFactory實現是 org.springframework.beans.factory.xml.XmlBeanFactory。

如果通過配置文件來完成配置,在內部是通過實現了BeanDefinition接口的類的實例來表現的。Bean的配置不僅存儲著關于ean自己的信息,同時還有其依賴的beans的信息。對于任何實現了beanDefinitionRegistry接口的BeanFactory類,從配置文件中讀取BeanFactory定義Bean(BeanDefinition)數據,既可以通過PropertiesBeanDefinitionReader(基于.properties文件)也可以通過XMLBeanDefinitionReader(基于XML文件)。

XmlBeanFactory派生于DefaultListableBanFactory并且簡單的擴展了它,使它能夠通過XmlBeanDefinitionReader自動獲取配置信息。用戶不需要實例化BeanFactory,因為Spring框架代碼會做這件事。

一個XmlBeanFactory定義Bean的內容有:
classname:這通常是bean的真正的實現類。但是如果一個bean使用一個靜態工廠方法所創建而不是被普通的構造函數創建,那么這實際上就是工廠類的classname bean行為配置元素:它聲明這個bean在容器的行為方式(比如prototype或singleton,自動裝配模式,依賴檢查模式,初始化和析構方法)。

BeanFactory調用某個類的靜態的工廠方法來創建bean,class屬性指定了實際包含靜態工廠方法的那個類。有以下3個途徑創建bean:
1.通過構造函數創建bean
2.通過靜態工廠方法創建Bean
3.通過實例工廠方法創建bean

每一個bean都有一個或多個id(也叫作標志符,或名字;這些名詞說的是一回事)。這些id在管理bean的BeanFactory或 ApplicationContext中必須是唯一的。一個bean一般只有一個id,但是如果一個bean有超過一個的id,那么另外的可以認為是別名。

BeanFactory定義Beans為兩種部署模式中的一種:singleton或prototype。如果一個bean是singleton形態的,那么就只有一個共享的實例存在, 所有和這個bean定義的id符合的bean請求都會返回這個唯一的、特定的實例。如果bean以non-singleton,prototype模式部署的話,對這個bean的每次請求都會創建一個新的bean實例。這對于例如每個user需要一個獨立的user對象這樣的情況是非常理想的。

Beans 默認被部署為singleton模式,除非你指定。要記住把部署模式變為non-singletion(prototype)后,每一次對這個bean的請求都會導致一個新創建的bean,而這可能并不是你真正想要的。所以僅僅在絕對需要的時候才把模式改成prototype。(我僅在 ThrowawayController時使用過singleton="false)
反向控制/依賴注射存在兩種主要的形式:

1.基于setter的依賴注射,是在調用無參的構造函數或無參的靜態工廠方法實例化你的bean之后, 通過調用你的bean上的setter方法實現的。在BeanFactory定義Bean的使用基于setter方法的注射依賴的bean是真正的JavaBean。 Spring一般提倡使用基于setter方法的依賴注射,因為很多的構造函數參數將會是笨重的, 尤其在有些屬性是可選的情況下。

2.基于構造函數的依賴注射,它是通過調用帶有許多參數的構造方法實現的, 每個參數表示一個合作者或者屬性。  雖然Spring一般提倡在大多數情況下使用基于setter的依賴注射, 但是Spring還是完全支持基于構造函數的依賴注射,因為你可能想要在那些只提供多參數構造函數并且沒有setter方法的遺留的bean上使用Spring。另外對于比較簡單的bean,使用構造函數方法以確保bean不會處于錯誤的狀態。

【編輯推薦】

  1. Spring3.0將全面支持REST
  2. 專家Isvy談Spring 3.0
  3. JSF與Spring的集成
  4. 詳細介紹Spring事務管理
  5. Spring框架的事務管理應用分析
責任編輯:佚名 來源: csdn
相關推薦

2009-06-17 17:20:14

BeanFactorySpring

2023-07-06 14:24:23

Spring接口自定義

2024-02-23 10:33:34

SpringBean容器

2011-03-18 09:27:00

Spring

2025-02-28 08:16:14

Spring框架注解

2021-07-05 18:05:40

SpringBean方法

2023-10-27 07:39:44

IOC容器Spring

2024-05-29 08:19:03

2023-01-13 07:41:20

BeanSpring容器

2025-03-10 09:30:00

SpringJava開發

2023-09-05 08:23:56

SpringScope方法

2022-06-23 10:47:57

Spring容器工具

2011-04-02 15:25:41

Spring

2023-09-28 08:15:05

SpringBean加載

2011-04-19 09:27:25

Spring

2022-07-20 07:45:52

POJOJavaSpring IoC

2024-01-23 08:47:13

BeanSpring加載方式

2021-04-23 14:14:46

設計模式對象

2022-03-14 08:54:42

SpringBean生命周期

2024-11-14 14:53:04

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品欧美一区二区三区 | 欧美成年网站 | 中文字幕亚洲精品 | 北条麻妃一区二区三区在线视频 | 亚洲午夜小视频 | 精品欧美一区二区精品久久久 | 在线观看亚洲欧美 | 夜夜骚| 亚洲三区在线观看 | 日韩欧美在线不卡 | 黑人久久 | 欧美一级二级三级视频 | 久久天天综合 | 欧美aaaa视频 | 精精久久 | 99久久精品免费看国产小宝寻花 | 亚洲国产成人av好男人在线观看 | 日韩欧美三区 | 中文字幕亚洲区一区二 | 日韩精品一区二区三区中文字幕 | 久草在线青青草 | 夏同学福利网 | 国产h视频 | 精品久久99| 久久久久国产一区二区三区 | 国产一级片一区二区 | 欧美阿v | 久久9视频| 国产精品久久久久久久久久免费 | 亚洲成人天堂 | 日本精品视频在线 | 精品久久久久一区二区国产 | 91成人精品视频 | 三级成人在线 | 久久久精品网站 | 国户精品久久久久久久久久久不卡 | 日韩三级免费观看 | 精品亚洲91 | 91精品国产91久久综合桃花 | 精品国产免费人成在线观看 | 精品少妇一区二区三区在线播放 |