自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談Spring容器在Web項(xiàng)目中的使用

開(kāi)發(fā) 后端
本文將簡(jiǎn)單談?wù)凷pring容器在Web項(xiàng)目中的使用,Spring容器主要負(fù)責(zé)實(shí)例化、管理Bean,默認(rèn)是XmlWebApplicationContext類。

Spring容器默認(rèn)通過(guò)Xml配置文件定義bean以及他們之間的依賴關(guān)系。Xml文件中通過(guò)配置元數(shù)據(jù)來(lái)定義Bean和他對(duì)其他Bean的依賴。

DefaultListableBeanFactory的職責(zé)是實(shí)例化、初始化運(yùn)用中的各種bean以及管理他們之間的關(guān)系。該實(shí)現(xiàn)使得Bean之間的關(guān)系可以通過(guò)Xml管理。

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

Spring容器的初始化

Servlet通過(guò)ContextCloader類初始化ApplicationContext。

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

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

DefaultListableBeanFactorybeanFactory=newDefaultListableBeanFactory()

XML配置元數(shù)據(jù)(resource對(duì)象表示)

XML配置元數(shù)據(jù)通常就是指每個(gè)XML配置文件,由這些配置元數(shù)據(jù)共同組成了XML配置文件。為了加載XML配置文件生成ApplicationContext對(duì)象,可以將這些XML配置文件的文件路徑作為String數(shù)組傳給ApplicationContext,ApplicationContext會(huì)將每個(gè)XML配置元數(shù)據(jù)生成一個(gè)Resource對(duì)象。同時(shí)BeanFactroy會(huì)通過(guò)調(diào)用BeanDefinitionReader對(duì)象從多個(gè)XML文件讀取Bean的定義。

多個(gè)Bean定義(BeanDefinition對(duì)象表示)

Spring容器將管理多個(gè)Bean對(duì)象,而這些Bean對(duì)象通過(guò)xml配置文件中的Bean定義被創(chuàng)建。

在Spring系統(tǒng)中,Bean定義通過(guò)BeanDefinition對(duì)象表示,該對(duì)象封裝了相應(yīng)的Bean定義的內(nèi)容。每個(gè)Bean定義必須包含以下幾個(gè)內(nèi)容

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

。。。。。

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

◆創(chuàng)建bean的構(gòu)造函數(shù)參數(shù)和屬性,例如設(shè)置連接池的連接數(shù)以及連接池的連接數(shù)大小等。

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

實(shí)例化Bean

◆用構(gòu)造函數(shù)來(lái)實(shí)例化Bean。

只要設(shè)置Class屬性,且指定類一般都有一個(gè)默認(rèn)的空構(gòu)造器。這樣Spring容器就可以通過(guò)放射機(jī)制調(diào)用指定類的構(gòu)造函數(shù)實(shí)例化指定類(相當(dāng)于Java中的new操作符)。

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

◆Factory-method靜態(tài)工廠方法實(shí)例化Bean。

必須設(shè)置Factory-method屬性來(lái)指定創(chuàng)建bean的靜態(tài)工廠方法名,且指定類相應(yīng)方法必須聲明為static。

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

該定義不用指定返回對(duì)象的類型,僅僅指定了該類的工廠方法名,此例中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對(duì)象,name="+name);  
  16. }  
  17.  
  18. publicstaticReginfoOperatorcreateInstance(){  
  19. returnnewReginfoOperator("hello");  
  20. }  
  21. }  

◆Factory-bean工廠對(duì)象實(shí)例化bean。

用來(lái)實(shí)例的工廠方法位于另一個(gè)已有的bean中,容器將調(diào)用這個(gè)Bean的工廠方法創(chuàng)建新的指定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對(duì)象,name="+name);  
  26. }  

【編輯推薦】

  1. JSF和Spring的集成
  2. 在Spring中進(jìn)行集成測(cè)試
  3. 比較JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket
  4. Spring中的TopLink ServerSession
  5. Spring is coming
責(zé)任編輯:彭凡 來(lái)源: javaeye
相關(guān)推薦

2022-12-08 10:40:06

聲明式事務(wù)AOP

2022-04-20 15:55:29

容器架構(gòu)設(shè)計(jì)

2011-05-19 08:57:41

軟件開(kāi)發(fā)項(xiàng)目

2012-05-30 15:57:49

ERP項(xiàng)目運(yùn)維

2011-05-18 16:02:08

XML

2011-07-08 08:37:05

軟件開(kāi)發(fā)

2011-05-07 09:07:53

功能點(diǎn)

2024-05-24 10:01:12

2023-12-07 19:19:11

2024-08-19 01:10:00

RedisGo代碼

2024-09-09 05:30:00

數(shù)據(jù)庫(kù)Spring

2009-01-03 14:39:04

ibmdwDojoMVC

2015-08-03 11:45:37

storyboard

2009-06-24 17:34:58

使用JSF的經(jīng)驗(yàn)

2024-10-18 16:21:49

SpringPOM

2016-11-01 20:26:47

前端模板underscoreWeb

2009-06-25 14:45:05

Spring2.5

2011-08-23 17:52:39

LUAWeb 開(kāi)發(fā)

2020-10-27 14:15:42

SpringBoot

2012-07-13 09:35:58

PHP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)