1. ApplicationContext ac = newClassPathXmlApplicationContext(“applicationContext.xml”);
ApplicationContext 是Spring的核心,是一個巨大的工廠,他來創建實例化。
2. Inversion of Control(IoC)
a) 各組件面向接口編程,把耦合度提高到接口的層次,提高可擴展性
b) 各組件不是由程序產生,而是由Spring來產生,並初始化
c) Spring採用配置文件,Annotation來管理Bean的實現,依賴關係,根據配置文件,利用反射機制來創建實例,在其setter注入依賴關係。
3. BeanFactory是ApplicationContext的實例,一般情況下是用ApplicationContext而在一些內存非常關鍵的時候才用BeanFactory.
4. ApplicationContext事件機制
a) ApplicationEvent容器事件
b) ApplicationListener監聽器
c) Spring事件模式就是標準的觀察者模式
5. 指定屬性標識符
a) Id 唯一標識
b) name 名字
c) alias 別名
6. 容器中的作用域
a) Singleton:單例模式
b) Prototype:原型模式
c) Request:對每一次的http請求有效
d) Session:對每一次HTTPSession產生一個新實例
e) Global session :全局
7. Spring對Bean的要求
a) 儘量用無參構成函數
b) 構成注入的時候要提供對應的構造函數
c) 設值注入對應提供setter方法
d) 與傳統的JavaBean的區別
i. JavaBean多作爲參數傳遞要求提供setter,getter;SpringBean 只接受設值注入的setter
ii. 任何組件都可以稱爲Bean
iii. 生命週期,JavaBean作爲參數傳遞不受任何容器的管理,Spring Bean有生命週期
8. Spring Annotation
a) @Configuration 修飾一個Java配置類
b) @Bean 修飾一個方法
c) @Value修飾一個字段(Field)
d) @import導入其他Java配置類
e) @Scope 修飾一個方法,指定該方法對應的Bean生命週期
f) @Lazy 修飾一個方法,指定該方法對應的Bean是否需要延遲加載
g) @dependOn 修飾一個方法,指定初始化該方法對應的Bean之前初始化指定的Bean
h) @ImportResource(“classpath:/beans.xml”)以Annotation爲主時候加載XML
i) <context:annotation-config/>Xml爲主的時候加載Annotation
9. 創建Bean
a) 使用static 靜態工廠創建Bean
i. 使用class元素確定靜態工廠類
ii.
b) 使用實例工廠方法創建Bean
i. 使用factory-bean屬性確定Bean
c) 相同處:
i. 都使用factory-method 屬性指定Bean實例工廠模式
ii. <constructor-arg value=””>指定工廠方法需要參數
iii. 使用<property name=”” value=””>指定屬性的參數值
10. 容器中的工廠Bean (FactoryBean)
a) T getObject()實現該方法返回Bean生成的Java實例
b) Class<?> getObjectType()返回java實現類
c) boolean isSingleton()是否是單例
11. Bean的生命週期
a) singleton.管理Bean的init和destory
b) prototype.完全交給客戶端
c) init-method和destory-method來指定(回收資源)close()關閉
d) 當在singleton中應用prototype時
i.在其添加一個抽象方法abstract
ii.<lookup-methodname=”” bean=”prototype.id”>
12. XMLSchema 的使用
IoC(Inversionof Control)