# Spring 2/23上課內容
###### tags: `Spring`
#### 指導老師

# 1 Spring動態網站開發(目錄)

* **Spring主軸**
* 學會獨立
* 不要過度依賴
---

# 3 Spring動態網站開發

* 重量級: 依賴作業系統(過度依賴)
* 輕量級: 不管怎樣都可以執行(必較不依賴作業系統)[效率較高]

* 物件與物件的關係
* **ioc**
* di(依賴注入)是ioc的一種實現
* 控制反轉
# 4 Spring動態網站開發(四大類)

[Spring](https://spring.io/)
* **早期SSH**
* Struts Spring Hibernate
* **現在SSH**
* SpringMVC Spring Hibernate
[Spring Framework](https://spring.io/projects/spring-framework)
# 5 Spring動態網站開發

* WebSocket: 即時通訊軟體(其中一個工作)
* Core Containgr(核心)
---

* **BeanFactory**
* 控制所有Bean元件
* Spring Framework 設定檔物件
# 6 Spring動態網站開發


* **攔截器**
* 每一頁有登入條件 先決定每頁都有登入功能
* 不用修改原來程式 就會自動判斷
# 7 Spring動態網站開發(控制反轉Inversion of Control)

降低依賴
# 8 Spring動態網站開發

* 早期Service依賴DAO做事
* Ioc把Service,DAO作為獨立的物件
* 總結:降低依賴關係
---
### 版本0

* 有物件導向概念
# 9 Spring動態網站開發
### 版本1

* 重複利用
---
### 版本2

# 10 Spring動態網站開發

---

# 11 Spring動態網站開發(依賴注入Dependency Injection)
* 不用更動原來程式碼

* 被依賴

* 依賴的

# 12 Spring動態網站開發

* [equals](https://docs.microsoft.com/zh-tw/dotnet/api/system.string.equals?view=net-5.0):忽略大小寫
* String 任何類別型別都能用null
---

* 找別人做事 中介商概念
# 13 Spring動態網站開發

---
* 依賴寫法

用建構子帶進來
* 同名原因:怕給錯 以後會帶多個參數 名子才不會給錯
# 14 Spring動態網站開發

* hibernate用get方法
* Spring用Set方法or Constructor
* 宣告變數第一個單字全部用小寫
---


### 28 Spring動態網站開發(提供bean的組態資訊)

---

上面早期 下面新一代
### 29 Spring動態網站開發

* 註冊設定檔 BeanFactory
* 裝起來的環境Bean Container
[Spring api](https://docs.spring.io/spring-framework/docs/current/javadoc-api/)
---

### 30 Spring動態網站開發

* 由Class路徑找xml檔
[api](https://docs.spring.io/spring-framework/docs/current/javadoc-api/)

---

### 31 Spring動態網站開發(三種都要會)

在每個Bean元件上面設定組態
### 32 Spring動態網站開發(組態檔說明Bean組裝資訊)(Bean Configuration File)

* ...(variable arguments)
---

### 33 Spring動態網站開發

constructor-arg 建構子
[String class](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)
