Spring:開源的輕量級的應用開發框架
特點:簡化開發(對API進行簡化);
解耦(spring幫我們去管理對象,包括對象之間的依賴關係);
集成:可以集成其它的框架;
Spring:本質是管理軟件中的對象,即創建對象和維護對象之間的關係;
Spring容器:
1)Spring框架用來管理對象的一個核心模塊;
2)如何啓動Spring容器:將Spring相關的jar文件拷貝到WEB-INF/lib下;
配置Spring的配置文件(applicationContext.xml)
啓動容器;
3)利用容器創建對象:1)調用不代參的構造器;2)靜態工廠;3)實例工廠;
4)作用域:
4.1)默認情況下,容器對於一個bean配置,只會創建一個實例;
4.2)可以設置scope屬性=“protptype”,每getbean一次,都會創建一個實例;
生命週期
1)init-method屬性:指定初始化方法,容器在創建好相應的對象之後,會立即調用初始化方法;
2)destroy-method屬性:指定銷燬方法,容器關閉之前會調用銷燬方法;
應用使用AbstractApplicationContext接口,銷燬方法只針對作用域爲單列的bean;
延遲實例化:
默認情況下,容器在啓動之後,會檢查整個的配置文件,將配置爲單個的bean,先創建好;如果設置Lazy-init屬性
爲true,則容器不再按照默認情況進行處理(只有當getBean纔會創建);
IOC(控制反轉):
對象的依賴關係交給容器來管理;
DI(依賴注入):
容器通過調用對象的構造器或者set方法來建立對象之間的依賴關係;
set方式的注入:
有無參的構造器;有相應的get/set方法;
構造器注入
有帶參的構造器,添加相應的配置 < contructor-org index="" ref=""/>
自動裝配:
autowire:表示讓容器自動裝配(自動注入依賴關係);
byName:查找和屬性名稱一致的bean,然後調用set方法來完成注入,如果找不到對應的bean,注入null;
byType:容器查找與屬性類型一致的bean,然後調用set方法來完成注入,如果找不到對應的bean,注入null,
如果找到多個則報錯;
注入基本類型的值 :可以使用value屬性或者value元素;
注入集合
list集合,set集合,map元素和entry元素;props和prop元素;
將集合作爲第一個bean元素
util:list元素; util:set元素 ; util:map元素; util:properties元素; util:properties可以讀取proper文件內容;
Spring表達式
類似於EL表達式,用於讀取bean對象的屬性值;
基於註解的組件掃描
spring容器會檢查指定包及其子包下面的所有類,如果該類包含了一些特定的註解,則spring容器會將其作爲一個bean
來進行管理,換句話講,就是相當於在配置文件中增加一個元素,使用組件掃描,可以簡化spring的配置文件;
如何進行組件掃描:
1)在spring配置文件中,添加<context:component-scan base-package=""/> 開啓註解掃描,其中,
base-package指定要掃描的包;
2)在類名前添加相應的註解
@component @Repository ->持久化層 @Service ->業務層 @Controller ->控制層
作用域:@Scope來指定,值可以是prototype和singleton
生命週期相關方法:@PostConstruct @PreDestroy
延遲加載:@Lazy(true)
@ResponseBoby作用:將Controller方法返回的對象,通過適當的HTTPMessageConvertor轉換爲指定格式
後,寫入到Response對象的boby數據區;
使用時,返回的數據不是HTML標籤的頁面,而是其它格式的數據eg:Json,xml;
使用註解注入依賴關係
1)@Autowired和@Qualifier :該註解支持構造器注入和set注入;
2)@Resource :支持set方法注入,也可加到屬性前;