国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Spring筆記

2019-11-06 06:22:01
字體:
來源:轉載
供稿:網友
什么是SPRing?Spring是一個開源框架Spring為簡化企業級應用開發而生,使用Spring可以使簡單的javabean實現以前只有EJB才能實現的功能Spring是一個IOC(DI)和AOP容器框架具體描述Spring:--輕量級 :Spring是非侵入式的,基于Spring開發的應用中的對象可以不依賴Spring的API--依賴注入(DI、IOC)--面向切面編程(AOP)--容器,Spring是一個容器--框架,Spring實現了簡單的組件配置組合成一個復雜的應用,在Spring中可以使用xml和java注解組合這些對象。--一站式,在IOC和AOP的基礎上可以整合各種企業應用的開源框架和優秀的第三方類庫IOC和DI概述:IOC(Inversion of Control),反轉資源獲取的方向,傳統資源查找方式要求組件向容器發起請求查找資源,作為回應,容器適時地返回資源;而應用了IOC之后,則是容器主動地將資源推送給它所管理的組件,組件所要做的僅是選擇一種合適的方式來接受資源,這種行為也被稱為查找的被動形式。DI(Dependency Injection),IOC的另一種表述方式,即組件以一些預先定義好的方式(例如setter方法)接受來自如容器的資源注入,相對于IOC而言,這種表述更直接。配置bean: class: bean的全類名,通過反射的方式在IOC容器中創建bean,所以要求bean必須有無參數的構造器。id: 標識容器中的bean,id唯一。在Spring IOC容器對去bean配置創建bean實例之前,必須對它進行實例化,只有在容器實例化后,才可以從IOC容器里獲取bean實例并使用。Spring提供了兩種類型的IOC容器實現:--BeanFactory :IOC容器的基本實現--applicationContext:提供更多的高級屬性,是BeanFactory的子接口。--BeanFactory是Spring框架的基礎設施,面向Spring本身;ApplicationContext面向使用Spring框架的開發者,幾乎所有的應用場合都直接使用ApplicationContext而非底層的BeanFactory.--無論使用何種方式,配置文件時相同的。ApplicationContext的主要實現類:--ClassPathXmlApplicationContext :從類路徑下加載配置文件--FileSystemXmlApplicationContext:從文件系統中加載配置文件ConfigurableApplicationContext擴展于ApplicationContext,新增兩個主要方法refresh()和close()。ApplicationContext在初始化上下文時就實例化所有單例的bean。WebApplicationContext是專門為web應用而準備的,它允許從相對于web根目錄的路徑中完成初始化工作。依賴注入的方式:--屬性注入即通過setter方法注入bean的屬性值或依賴的對象屬性注入使用<property>元素,使用name屬性指定bean的屬性名稱,value指定屬性值。屬性注入是實際應用中最常用的注入方式--構造器注入通過構造方法注入bean的屬性值或依賴對象,它保證了bean實例在實例化后就可以使用構造器注入在<constructor-arg>元素里聲明屬性,它沒有name屬性。--工廠方法注入(不推薦)注入屬性值細節:--自動轉配==bean之間的關系:繼承,依賴--bean的作用域:singleton,prototype,web環境作用域--使用外部屬性文件--spEL--IOC容器中bean的生命周期--Spring 4.x新特性:泛型依賴注入字面值:可用字符串表示的值,可以通過<value>元素標簽或value屬性進行注入基本數據類型及其封裝類、Spring等類型可以采取字面值注入的方式若字面值中包含特殊字符,可以使用<![CDATA[]]]>把字面值包裹起來Bean之間的引用:要使bean之間能夠互相訪問,就必須在bean配置文件中指定對bean的引用,在bean的配置文件中可以通過<ref>元素或ref屬性為bean的屬性或構造器參數指定對bean的引用。也可以在屬性或構造器里包含bean的聲明,這樣的bean稱為內部bean。注入參數詳解;null值和級聯屬性可以使用專用的<null/>元素標簽為bean的字符串或其它對象類型的屬性注入null值和Struts、hibernate等框架一樣,Spring支持級聯屬性的配置。集合屬性;在Spring中可以通過一組內置的xml標簽(如<list>,<set>,<map>)來配置集合屬性。配置java.util.List類型的屬性,需要制定<list>標簽,在標簽里包含一些元素,這些標簽可以通過<value>制定簡單的常量值,通過<ref>指定其他bean的引用,通過<bean>指定內置bean定義,通過<null/>指定空元素,甚至可以內嵌其他集合。數組的定義和List一樣,都使用<list>配置java.util.Set需要使用<set>標簽,定義元素的方法與List一樣。java.utilMap通過<map>標簽定義,<map>標簽可以使用多個<entry>作為子標簽,每個條目包含一個個鍵和一個值。必須在<key>標簽里定義鍵。因為鍵和值的類型沒有限制,所以可以自由地為他們指定<value>,<ref>,<bean>或<null/>元素。可以將Map的鍵和值作為<entry>的屬性定義:簡單常量使用key和value來定義,bean引用通過key-ref和value-ref屬性定義。使用<props>定義java.util.properties,該標簽使用多個<prop>作為子標簽,每個<prop>必須定義key屬性。使用utility scheme定義集合:使用基本的集合標簽定義集合時,不能將集合作為獨立的bean定義,導致其他bean無法引用該集合,所以無法再不同bean之間共享集合。可以使用util schema 里的集合標簽定義獨立的集合bean,注意必須在<beans>根元素里添加util schema定義。使用p命名空間:為了簡化文件的配置,越來越多的XML文件采用屬性而非子元素配置信息。Spring 2.5版本開始引入了一個新的p命名空間,可以通過<bean>元素屬性的方式配置bean屬性。使用p命名空間后,基于mxl的配置方式將進一步簡化。XML配置里的bean自動裝配:Spring IOC容器可以自動裝配bean,需要做的僅僅是在<bean>的autowire屬性里指定自動裝配的模式。byType(根據類型自動裝配):若IOC容器中有多個與目標bean類型一致的bean,Spring將無法判定哪個bean最適合該屬性,所以不能執行自動裝配。byName(根據名稱自動裝配):必須將目標bean的名稱和屬性設置的完全不同。constructor(通過構造器自動裝配):當bean中存在多個構造器時,此種自動裝配方式將會很復雜,不推薦使用。繼承bean配置:Spring 允許繼承bean配置,被繼承的bean成為父bean,繼承這個bean的成為子bean。子bean從父bean中繼承配置,包括bean的屬性配置。子bean也可以覆蓋從父bean繼承過來的配置。父bean可以作為配置模板,也可以作為bean的實例,若只想把父bean作為模板,可以設置<bean>的abstract屬性為true,這樣Spring將不會實例化這個bean。并不是<bean> 元素里的所欲屬性都會被繼承,比如:autowire,abstract等也可以忽略父bean的class屬性,讓子bean指定自己的類,而共享相同的屬性配置,但此時abstract必須設為true。依賴bean配置:Spring允許用戶通過depends-on屬性設定bean前置依賴的bean,前置依賴的bean會在本bean實例化之前創建好。如果設置依賴多個bean,則可以通過逗號,空格的方式配置bean的名稱。使用bean的scope屬性來配置bean的作用域:singleton:默認值,容器初始創建bean實例,在整個容器的聲明周期內只創建這一個bean,單例的。prototype:原型的,容器初始化時不創建bean的實例,而在每次請求時都創建一個新的bean實例,并返回。使用外部屬性文件:在配置文件配置bean時,有時需要在bean的配置文件里混入系統部署的細節信息(如文件路徑、數據源配置信息等),而這些部署細節實際上需要和bean配置分離。Spring提供了一個PropertyPlaceholderConfigurer的BeanFactory后置處理器,這個處理器允許用戶將bean配置的部分內容移到屬性文件中,可以在bean配置文件里使用形式為${var}的變量,ProopertyPlaceholderConfigurer從屬性文件里加載屬性,并使用這些屬性來替換變量。Spring還允許在屬性文件中使用${propName},以實現屬性之間的相互引用。Spring表達式語言:SpELSpring表達式語言是一個支持運行時查詢和操作對象的強大的表達式語言。語法類似于EL,SpEL使用#{...}作為定界符,所有在大括號中的字符都將被認為是SpEL.SpEL為bean的屬性進行動態賦值提供便利。通過SpEL可以實現:--通過bean的id對bean進行引用 --調用方法以及引用對象中的屬性 --計算表達式的值 --正則表達式的匹配 SpEL字面量:字面量的表示:--整數:<property name="count" value="#{4}"/>--小數:<property name="frequency" value="#{4.44}"/>--科學計數法:<property name="capacity" value="#{1e4}"/>--String可以使用單引號或雙引號作為字符串的定界符號:<property name="name" value="#{'Chuck'}"/>或<property name="name" value="#{"Chuck”}"/>--Boolean:  <property name="enabled" value="#{false}"/>SpEL:引用bean、屬性和方法:調用靜態方法或靜態屬性:通過T()調用一個類的靜態方法,他將返回一個Class Object,然后再調用相應的方法或屬性:<property name="initValue" value="#{T(java.lang.Math).PI}"/>IOC容器中bean的生命周期方法:SpringIOC容器可以管理bean的生命周期,Spring允許在bean生命周期的特定點執行定制的任務。SpringIOC容器對bean的生命周期進行管理的過程:--通過構造器或工廠方法創建bean實例--為bean屬性設置值和對其他bean的引用--調用bean的初始化方法--bean可以使用了--當容器關閉時,調用bean的銷毀方法在bean的聲明里設置init-method和destory-method屬性,為bean指定初始化和銷毀方法。創建bean后置處理器:bean后置處理器允許在調用初始化方法前后對bean進行額外的處理。bean后置處理器對IOC容器里的所有bean實例逐一處理,而非單一實例,其典型應用是:檢查bean屬性的正確性或根據特定的標準更改bean的屬性。對bean的后置處理器而言,需要實現interface BeanPostProcessor接口,在初始化方法被調用前后,Spring將把每個bean實例分別傳遞給上述接口的兩個方法:--public Object postProcessBeforeInitialization(Object bean,String beanName)   --public Object postProcessAfterInitialization(Object bean,String beanName)通過調用靜態工廠方法來配置Bean,注意不是配置靜態工廠方法實例,而是配置bean實例:--class屬性:指向靜態工廠方法的全類名--factory-method:指向靜態工廠方法的名字--constructor-arg:如果工廠方法需要傳入參數,使用從constructor-arg來配置參數通過調用實例工廠方法創建bean:實例工廠方法:將對象的創建過程封裝到另外一個對象實例的方法里。當客戶端需要請求對象時,只需要簡單的調用該實例方法而不需要關心對象的創建細節。要聲明通過實例工廠方法創建的實例bean--在bean的factory-bean屬性里指定擁有該工廠方法的bean--在factory-method屬性里指定該工廠方法的名稱--使用construtor-arg元素為工廠方法傳遞方法參數
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄浦区| 阳西县| 泽州县| 鄄城县| 神农架林区| 浙江省| 普兰店市| 天全县| 桂阳县| 庆元县| 农安县| 凤凰县| 会泽县| 特克斯县| 富平县| 吉安市| 临邑县| 东辽县| 高淳县| 左权县| 岢岚县| 泾阳县| 遂平县| 霍林郭勒市| 化隆| 夹江县| 洪泽县| 商洛市| 磐石市| 简阳市| 兰州市| 灵石县| 苍南县| 时尚| 普宁市| 根河市| 漳平市| 石门县| 襄樊市| 郴州市| 石景山区|