day1
Spring
IOC 和 AOP 為內核
IOC inverse of control 控制反轉
AOP aspect oriented programing 面向切面編程
展現層 WEB
SpringMVC
持久層 DAO
Spring JDBCTemplate
業務層 SERIVICE
事務管理
Spring發展
- Rod Johns Spring之父
- 學習Spring5.0.5
Spring優勢
- 方便解耦,簡便開發
- 物件創建權給Spring完成 物件放在容器中
- AOP 編程支持
- 面向切面編程
- 宣告式事務控制
- 配置的方法
- 方便程式的測驗
- 繼承眾多優秀框架
- 降低JavaEE的使用難度
- Spring對JavaEEAPI進行了封裝層 模板Template
- Java原始碼是經典的學習典范
Spring體系結構
CoreContainer
Beans 容器產生物件
Core 核心
Context 行下文
SpEL SpringExpressionLanguage Spring運算式語言
AOP切面
dataAccess
Web
Spring程式開發步驟
- 匯入Spring基本包
- 撰寫Dao介面及其實作
- 創建Spring核心組態檔
- 在Spring配置介面
IOC
- 撰寫需要放入容器中的類
- 創建XML組態檔,檔案名習慣為applicationContext.xml
- 利用Bean標簽將需要的物件放入bean容器中,id隨便取,class為需要裝入容器中的類的全包名,spring內部會通過classname.class.getContructor().newInstance()創建實體物件,無參構造創建
<bean id="UserDao" />
id 是唯一性表示,不允許重復
class 全限定名
Bean標簽的范圍設定 scope屬性
- singleton 單一的唯一的,用的是設計模式里面的單例模式,容器之中物件唯一
- prototype 多例的 ,每次getbean都會創建一個新的物件
- request
- session
- global session
以上三種會把物件放到容器的同時也會把物件放到相應的request、sessioni、全域session域中方便獲取,配置需要在web環境下
單元測驗
- Junit單元測驗
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
<scope>test</scope>
</dependency>
Bean的創建時機
- 從容器中獲取的物件是使用無參建構式,在無參建構式中列印一句話方便查看物件的創建時機
- scope 設定為 singleton 時 當加載組態檔創建spring容器的時候設定為singleton的物件就創建 因為是單例模式,所以在初始化容器的時候就創建所有的單例物件,這個物件有切僅有一個
- 創建時機:當組態檔被加載時,物件就被創建了
- 物件運行:只要容器在,物件就一直在記憶體中
- 物件銷毀:當應用卸載,銷毀容器時,物件就被銷毀了
- scope 設定為 prototype bean的創建時機是在getBean時才創建
- 創建實際: 當使用物件時(getBean),創建新的物件實體
- 物件運行:只要在使用物件就一直存在
- 物件銷毀:物件長時間不適用,被Java垃圾回識訓制回收
Bean生命周期配置
- init-method 指定類的初始化方法
- destory-method 指定類的銷毀方法
//在物件的類中添加兩個方法,名字隨便
public void init(){
System.out.println("initialized...");
}
public void destroy(){
System.out.println("destroy...");
}
<!-- 通過在xml組態檔中配置方法 -->
<bean id="UserDao" scope="prototype" init-method="init" destroy-method="destroy"/>
Bean實體化的三種方式
- 無參構造方法實體化
- 工廠靜態方法實體化
//創建物件那個的工廠方法
public class StaticFactory {
public static UserDao getUserDao(){
return new UserDaoImpl();
}
<!-- xml 檔案配置更改-->
<bean id="UserDao" factory-method="getUserDao" scope="singleton" />
-
通過factory-method屬性指定生成物件的工廠方法
-
工廠實體方法實體化
-
這種方法需要現有工廠物件才能呼叫方法
-
- 先把工廠物件放到Spring容器中,Spring通過無參構造創建工廠物件
-
<bean id="DynamicFactory" scope="singleton"/> -
- 再配置獲取UserDao的Bean
-
<bean id="UserDao" factory-bean="DynamicFactory" factory- +method="getUserDao"/>
factory-bean是指定再Spring容器中的工廠方法,factory-method是指定工廠方法中創建物件的方法
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/473404.html
標籤:Java
下一篇:Day16例外1
