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

淺談Spring容器在Web項目中的使用

開發 后端
本文將簡單談談Spring容器在Web項目中的使用,Spring容器主要負責實例化、管理Bean,默認是XmlWebApplicationContext類。

Spring容器默認通過Xml配置文件定義bean以及他們之間的依賴關系。Xml文件中通過配置元數據來定義Bean和他對其他Bean的依賴。

DefaultListableBeanFactory的職責是實例化、初始化運用中的各種bean以及管理他們之間的關系。該實現使得Bean之間的關系可以通過Xml管理。

ApplicationContext類是Spring各種資源的集合體,包括消息資源處理(國際化處理)、事件傳遞、定義的各種Bean對象以及各種運用層的其他(ApplicationContext)。而ApplicationContext通過組合,有個BeanFactory屬性,所以ApplicationContext具備了DefaultListableBeanFactory所有操作。

Spring容器的初始化

Servlet通過ContextCloader類初始化ApplicationContext。

(1)初始化ApplicationContext,BeanFactory對象。

ConfigurableWebApplicationContextwac=(ConfigurableWebApplicationContext)
BeanUtils.instantiateClass("XmlWebApplicationContext.class");//默認是XmlWebApplicationContext.class

DefaultListableBeanFactorybeanFactory=newDefaultListableBeanFactory()

XML配置元數據(resource對象表示)

XML配置元數據通常就是指每個XML配置文件,由這些配置元數據共同組成了XML配置文件。為了加載XML配置文件生成ApplicationContext對象,可以將這些XML配置文件的文件路徑作為String數組傳給ApplicationContext,ApplicationContext會將每個XML配置元數據生成一個Resource對象。同時BeanFactroy會通過調用BeanDefinitionReader對象從多個XML文件讀取Bean的定義。

多個Bean定義(BeanDefinition對象表示)

Spring容器將管理多個Bean對象,而這些Bean對象通過xml配置文件中的Bean定義被創建。

在Spring系統中,Bean定義通過BeanDefinition對象表示,該對象封裝了相應的Bean定義的內容。每個Bean定義必須包含以下幾個內容

◆全限定類名(相對Classpath的全路徑文件名)

。。。。。

◆bean行為的定義:靜態工廠方法(factory-method)、工廠類(factory-bean)、依賴檢查(dependency-check)、自動裝配模式(autowire)、初始方法(init-method)、銷毀方法(destroy-method)、抽象屬性(abstract)、延遲加載(lazy-init)、孤子模式(singleton)等

◆創建bean的構造函數參數和屬性,例如設置連接池的連接數以及連接池的連接數大小等。

◆bean之間的依賴關系:parent、依賴屬性(depends-on)。

實例化Bean

◆用構造函數來實例化Bean。

只要設置Class屬性,且指定類一般都有一個默認的空構造器。這樣Spring容器就可以通過放射機制調用指定類的構造函數實例化指定類(相當于Java中的new操作符)。

< BEANID="REGINFOOPERATOR"PARENT="COM.LONGTOP.TEST.REGINFOOPERATOR">< /BEAN>

◆Factory-method靜態工廠方法實例化Bean。

必須設置Factory-method屬性來指定創建bean的靜態工廠方法名,且指定類相應方法必須聲明為static。

< BEANID="REGINFOOPERATOR"CLASS="COM.LONGTOP.TEST.REGINFOOPERATOR"FACTORY-METHOD="CREATEINSTANCE">
< /BEAN>

該定義不用指定返回對象的類型,僅僅指定了該類的工廠方法名,此例中createInstance聲明為static。

  1. publicclassReginfoOperator{  
  2. privateStringname;  
  3. publicStringgetName(){  
  4. returnname;  
  5. }  
  6.  
  7. publicvoidsetName(Stringname){  
  8. this.name=name;  
  9. }  
  10.  
  11. publicReginfoOperator(){  
  12. }  
  13. publicReginfoOperator(Stringname){  
  14. this.name=name;  
  15. System.out.println("生成ReginfoOperator對象,name="+name);  
  16. }  
  17.  
  18. publicstaticReginfoOperatorcreateInstance(){  
  19. returnnewReginfoOperator("hello");  
  20. }  
  21. }  

◆Factory-bean工廠對象實例化bean。

用來實例的工廠方法位于另一個已有的bean中,容器將調用這個Bean的工廠方法創建新的指定bean。

  1. <beanidbeanid="reginfoOperator" 
  2. factoryfactory-method="createOperatorInstance"factory-bean="operatorFactory"> 
  3. bean> 
  4. <beanidbeanid="operatorFactory"class="com.longtop.test.OperatorFactory"> 
  5. bean> 

其中reginfoOperator的定義中,class屬性必須為空,factory-bean必須定義為包含工廠方法factory-method的bean名稱。

  1. packagecom.longtop.test;  
  2.  
  3. publicclassOperatorFactory{  
  4.  
  5. publicOperatorFactory(){  
  6. }  
  7. publicReginfoOperatorcreateOperatorInstance(){  
  8. returnnewReginfoOperator("factory-bean");  
  9. }  
  10. }  
  11.  
  12.  
  13. publicclassReginfoOperator{  
  14. privateStringname;  
  15. publicStringgetName(){  
  16. returnname;  
  17. }  
  18.  
  19. publicvoidsetName(Stringname){  
  20. this.name=name;  
  21. }  
  22.  
  23. publicReginfoOperator(Stringname){  
  24. this.name=name;  
  25. System.out.println("生成ReginfoOperator對象,name="+name);  
  26. }  

【編輯推薦】

  1. JSF和Spring的集成
  2. 在Spring中進行集成測試
  3. 比較JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket
  4. Spring中的TopLink ServerSession
  5. Spring is coming
責任編輯:彭凡 來源: javaeye
相關推薦

2022-12-08 10:40:06

聲明式事務AOP

2022-04-20 15:55:29

容器架構設計

2011-05-18 16:02:08

XML

2011-05-19 08:57:41

軟件開發項目

2012-05-30 15:57:49

ERP項目運維

2011-07-08 08:37:05

軟件開發

2023-12-07 19:19:11

2011-05-07 09:07:53

功能點

2024-05-24 10:01:12

2024-08-19 01:10:00

RedisGo代碼

2009-01-03 14:39:04

ibmdwDojoMVC

2024-09-09 05:30:00

數據庫Spring

2015-08-03 11:45:37

storyboard

2009-06-24 17:34:58

使用JSF的經驗

2011-08-23 17:52:39

LUAWeb 開發

2016-11-01 20:26:47

前端模板underscoreWeb

2024-10-18 16:21:49

SpringPOM

2009-06-25 14:45:05

Spring2.5

2012-07-13 09:35:58

PHP

2012-07-13 09:38:15

項目代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色视频www在线播放国产人成 | 一区二区三区四区av | 欧美涩涩网 | 久草视频网站 | 手机av在线 | 精品一区二区三区在线观看 | 在线免费观看日本 | 91精品国产一区二区三区 | 精品在线免费观看视频 | 欧美日韩中| 欧美一区二区免费 | 欧美日韩综合一区 | 三级免费毛片 | 久热m3u8 | 福利国产| 天天操操 | 中文字幕高清av | 97av视频在线观看 | 国产精品夜间视频香蕉 | 激情六月丁香婷婷 | 亚洲欧美成人在线 | 偷拍自拍网址 | 欧美国产日韩在线观看 | 国产精品久久视频 | 亚洲免费在线观看av | 中文字幕免费视频 | 国产成人一区二区三区电影 | 国产精品久久久 | 91精品国产91久久综合桃花 | 国产在线视频三区 | 伊人精品国产 | 精品一区二区三区免费视频 | 在线视频中文字幕 | 精品久久久久一区二区国产 | 阿v视频在线观看 | 欧美a v在线 | 成人欧美一区二区三区视频xxx | 一区二区三区四区在线 | 精品一区二区三 | 日韩有码一区 | 久久av一区 |