spring學習筆記第一天(1)

-------------------------------------------------------------------Spring簡介------------------------------------------------------------

spring:全方位的整合形框架.

2003spring的第一個版本出現,版本號爲1.28

 

依賴關係:由高到低

表現層

表現形式:由低到高

Spring的實例池負責做對象給高層用

控制層

業務邏輯層

持久層

數據層

Spring框架爲分層以架構:7個模塊組成,名模塊構建於核心容器之上,核心容器定義了創建/配置及管理bean的方式;

Ø  springAOP:AOP的實現;通過配置管理特性, SpringAOP模塊將面向切面編程功能集成至框架中,使Spring框架管理的任何對象均支持AOP. SpringAOP模塊向基於Spring的應用程序中的對象提供事務管理服務.此模塊無需依賴於EJB組件,可以使用SpringAOP將聲明性事務管理集成至應用程序中.

Ø  springORM:整合其他ORM型框架; Spring框架中插入了若干ORM框架,提供ORM的對象關係工具,包括JDO, hibernateibats sql map, 都遵從Spring的能用事務及DAO異常層次結構.

Ø  springDAO:spring自己的持久化組件;JDBC DAO抽象層提供了意義重大的異常層次結構,簡化了錯誤處理過程並極大地了需要編寫的異常代碼(如打開或關閉連接),運用此結構可以管理異常,處理不同數據庫供應商招聘的錯誤消息. SpringDAO的面向JDBC異常遵從能用的DAO異常層次結構.

Ø  springWEB: SpringR web層框架;WEB上下文模塊建立在應用程序上下文模塊之上,向基於WEB的應用程序提供上下文,因而Spring框架支持與struts集成.同時,WEB模塊簡化了多部分請求的處理過程以及將請求參數綁定至域對象的工作.

Ø  SpringContext: Spring的上下文;核心模塊的BeanFactory使Spring成爲容器,上下文模塊使其成爲框架,此模塊擴展了BeanFactory的概念,增加了對國際化(i18n)的消息.事件的傳播以及驗證的支持;同時,此模塊提供諸多企業服務,:電子郵件,JNDI訪問,EJB集成,遠程以及時序調試(Scheduling)服務,支持對棋牌框架(velocity,freemarker)的集成

Ø  Spring Web MVC:整合web框架(struts);MVC框架是一個全功能的構建WEB應用程序的MVC實現.通過策略接口/MVC框架變爲調試可配置,它容納了大量的視力技術,包括JSP/Velocity/Tiles/iTextPOI.

Ø  SpringCore: Spring的核心,(包括IOC:指當上層組件調用下層組件時,通過Spring的配置文件去類型強轉): SpringCore勝於提供Spring框架的基本功能,其主要組件爲BeanFactory,是工廠模式的實現. BeanFactory使用反射控制(IOC)模式將應用程序的配置及依賴性規範與實際應用程序代碼分開.

Spring的特點:

a)         重點是整合WEB層和ORM框架

b)         通過IOC方式解偶合

c)          通過AOP方式解決程序中共性問題並實現IOC思想

 

------------------------------------------------------------SpringBean封裝機制------------------------------------------------------------

SpringBean的方式管理所有的組件,Spring,任何java對象以及java組件都可以當做Bean.

應用中各層的對象均由Spring管理,對象以bean的方式存在. Spring負責創建Bean的實例並管理其生命週期,bean運行於Spring的容器,Spring的上下文是生產Bean的工廠,beanSpring工廠生產的實例, Spring產生工廠時,需要確定每個bean的實現類.bean實例的使用者面向接口,因此無須關心bean實例的實現類,Spring工廠負責維護bean實例的實例化,使用者則無須關心.

BeanFactory接口:

BeanFactoryorg.springframeword.beans.factory. BeanFactory接口定義,是工廠模式(factory pattern)的實現,負責創建和管理bean. BeanFactory創建及頒發bean,並負責在實例化bean時創建bean之間的關係,此外, BeanFactory還可以參與到bean的生命週期中,調用對象的初始化函數和析構函數(XML中將自行定義的函數稱爲析構函數).

BeanFactory有實現類,其中org.springframeword.beans.factory.xml.XmlBeanFactory爲常用類.但對於大部分java ee,推薦使用ApplicationContext,它是BeanFactory的子接口,常用的實現類是org.springframeword.context.support.FileSystemXmlApplicationContext.

BeanFactory接口代表Spring容器的根接口,Spring任何容器實現類都直接或間接的實現此接口

BeanFactory接口包括以下3個基本方法:

         containsBean(String name)

                   //判斷Spring容器是滯包含idproBeanBean

                   Boolean flag=beanFactory.containsBean(“proBean”);

                   System.out.println(“是否包括proBeanbean:”+flag);

         getBean(String name)

                   //返回idproBeanbean

                   propertiesBean=(PropertiesBean)beanFactory.getBean(“proBean”);

                   propertiesBean.printBean();

                   //返回IDproBean且類型爲com.hr.persist.PropertiesBeanbean

                   propertiesBean=(PropertiesBean)beanFactory.getBean(“perBean”,PropertiesBean.class);

                   propertiesBean.printBean();

         getType(String name)

                   //返回idproBean的類型

                   Class classType=beanFactory.getTYpe(“proBean”);

                   System.out.println(“idproBean的類型”+classType);

ApplicationContex

Sprin包括兩種不同的容器:BeanFactoryApplicationContext,BeanFactory提供基本的IOC支持;ApplicationContext則基於BeanFactory,提供應用程序框架服務,如從properties文件中讀取信息.Spring提供了BeanFactoryApplicationContext的多個實現.

BeanFactory提供以編程方式操作容器的基本功能,Context包增加了ApplicationContext,使BeanFactory的功能得以擴展,大多數情況下,ApplicationContext允許以聲明的方式操作容器,無須手動創建.

ApplicationContext繼承了BeanFactory接口,提供BeanFactory的所有功能,同時具有部分新功能

a)         提供國際化的支持

b)         資源訪問,URL和文件

c)          事件傳遞

d)         載入多個配置文件

ApplicationContext通常使用以下兩個實現類:

         FileSystemXmlApplicationContext:以指定路徑下的XML配置文件創建ApplicationContext

         BeanFactory_beanFactory=new_FileSystemXmlApplicationContext(new String[]{“/WebRoot/WEB-INF/classes/applicationContext.xml”,”/WebRoor/WEB-INF/classes/bean.xml”});

ClassPathXmlApplicationContext:classpath路徑下的xml配置文件創建ApplicationContext

         //搜索classpath路徑,classpath路徑下的applicationContext.xml.bean.xml創建AppliContext

         BeanFactory_beanFactory=new_ClassPathXmlApplicationContext(new String[]{“ApplicationContext.xml”,”bean.xml”})

Bean的基本行爲及應用

BeanSpring的容器中存在以下兩種基本行爲:

a)         Singleton:單態

b)         Non-singletonprototype:原型

默認爲singleton,Spring容器中公存在一個共享的實例.程序每次請求該IDbean,Sprin都會返回這個bean的共享實例.可以重複使用. Non-singleton創建及銷燬bean的代價較大,應儘量避免bean設置爲Non-singleton行爲, Non-singleton行爲的Bean實例化後,將完全交由使用Bean的程序進行管理,對於Non-singleton行爲的bean,BeanFactory獲得後完全等同於new關鍵字的作用.Spring不會跟蹤管理Bean的生命週期的行爲;

bean的行爲設置爲Non-singleton,則在配置該bean的節點中設置scope=”prototype”

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章