---
# System prepended metadata

title: JAVA後端名詞解析
tags: [JAVA]

---

[toc]
# spring系列
## 大概介紹
### spring
Spring是一個開源的容器框架，可以接管web層，Service層，Dao層，持久化框架的組件
可以配置各種bean和維護bean與bean之間的關係，其核心就是IOC(控制反轉)，AOP(特性導向)
簡單來說就是一個分層的輕量化開源框架。
![image](https://hackmd.io/_uploads/HkG2BCASp.png)
![image](https://hackmd.io/_uploads/SkWaH0CST.png)
### spring MVC
模型（Model）、視圖（View）和控制器（Controller）其核心將輸入邏輯，業務邏輯和UI邏輯分離
Spring框架中基於web的mvc架構所建立的網頁框架，依上圖運作模式，front Controller會依據使用者請求URL決定處理的Controller，並回傳ModelAndView的資料，接者dispatcher Servlet藉由view Resolver與ModelAndView將頁面顯示；Bean的設定主要基於XML、Java Configuration，不過讓人卻步的點就是繁雜的設定檔，讓初學者感到頭痛。
### Spring Boot
為了解決Spring MVC中設定檔過度繁雜的問題，以及python-flask、node.js這些輕量級的框架的影響，於是社群建立了Spring boot框架，主要的特色為auto-configuration、更靈活的方式控制Bean，除了降低建立專案複雜度，也增加管理bean的靈活度；而各個starter也使得dependence的管理更有效率。
![image](https://hackmd.io/_uploads/ByTuF00Ha.png)
![image](https://hackmd.io/_uploads/HkrRKA0Hp.png)
## 名詞整理
### 什麼是spring bean
bean代指被IOC管理的對象，透過配置可以告訴IOC管理哪些對象
### bean的生命週期
bean的生命週期指的是bean在IOC中從創建到銷毀的過程
主要有5個流程
1. 實例化:為bean分配空間
2. 設置屬性:將bean進行注入和裝配
3. 初始化:
1-執行各種通知
2-初始化的前置方法
3-初始化方法
4-初始化的後置方法
5. 使用bean
6. 銷毀bean
### MVC的工作原理
1. 瀏覽器發送請求 DispatcherServlet攔截請求
2. DispatcherServlet 根據訊息調用HandlerMappingHandlerMapping根據URL去匹配能處理的Handler(Controller)並將涉及到的攔截器和handler一起封裝
3. DispatcherServlet 調用 HandlerAdapter執行 Handler 。
4. Handler 完成對使用者要求的處理後，會傳回一個 ModelAndView 物件給DispatcherServlet，ModelAndView 顧名思義，包含了資料模型以及對應的視圖的資訊。 Model 是傳回的資料對象，View 是個邏輯上的 View
5. ViewResolver 會根據邏輯 View 尋找實際的 View。
6. DispaterServlet 把回傳的 Model 傳給 View（視圖渲染）
7. 把 View 回傳給請求者（瀏覽器）
![image](https://hackmd.io/_uploads/r17WUA0S6.png)
