響應資料
@ResponseBody
- 型別:方法註解、類註解
- 位置:Controller方法、類上
- 作用:將方法返回值直接響應,如果返回值型別是 實體物件/集合 ,將會轉換為json格式響應
- 說明:@RestController = @Controller + @ResponseBody
統一響應結果
步驟 :
-
獲取員工資料,返回統一響應結果,在頁面渲染展示
-
在pom.xml檔案中引入dom4j的依賴,用於解析xml檔案
-
編寫解析xml的工具類、對應的實體類、xml檔案xxx.xml
-
頁面靜態檔案,放在resourcse下的static目錄下
-
編寫Controller程式,處理請求,響應資料
注意
springboot專案的靜態資源(html,css,js等前端資源)預設存放目錄為:classpath:/static 、 classpath:/public 、classpath:/recourcse
分層解耦
三層架構 ----單一職責原則
- controller:控制層,接收前端傳送的請求,對請求進行處理,並響應資料
- service:業務邏輯層,處理具體的業務邏輯
- dao:資料訪問層(Data Access Object)(持久層),負責資料訪問操作,包括資料的增、刪、改、查
例如:
分層解耦---高內聚低耦合
-
內聚:軟體中各個功能模組內部的功能聯絡
-
耦合:衡量軟體中各個層/模組之間的依賴、關聯程度
-
控制反轉:Inversion Of Control,簡稱IOC。物件的建立控制權由程式自身轉移到外部(容器),這種思想成為控制反轉。
-
依賴注入:Dependency Injection,簡稱DI。容器為應用程式提供執行時所依賴的資源,稱之為依賴注入。
-
Bean物件:IOC容器中建立、管理的物件,稱之為bean。
IOC&DI入門 ----步驟
- Service層及Dao層的實現類,交給IOC容器管理(控制反轉)
Dao層:
Service層:
-
為Controller及Service注入執行時,依賴的物件(依賴注入)
Controller層:
Service層:
-
執行測試
@Component ----將當前類交給IOC容器管理,成為IOC容器中的bean
- 將service層和dao層交給容器管理
@Autowired ---- 執行時,IOC容器會提供該型別的Bean物件,並賦值給該變數 - 依賴注入
- controller層依賴service層
- service層依賴dao層
IOC詳解
Bean的宣告
註解 | 說明 | 位置 |
---|---|---|
@Component | 宣告bean的基礎註解 | 不屬於一下三類時,用此註解 |
@Controller | @Component的衍生註解 | 標註在控制器類上 |
@Service | @Component的衍生註解 | 標註在業務類上 |
@Respository | @Component的衍生註解 | 標註在資料訪問類上(由於與mybatis整合,用的少) |
@Controller:在實際開發中,標註了@RestController,可以不寫,由於@RestController = @Controller + @ResponseBody
注意
- 宣告bean的時候,可以透過value屬性指定bean的名字,如果沒有指定,預設為類名首字母小寫
- 使用以上四個註解都可以宣告bean,但是在springboot整合web開發中,宣告控制器bean只能用@Controller
bean的元件掃描
- 前面宣告bean的四大註解,想要生效,還需要被元件掃描註解@ComponentScan掃描
- @ComponentScan註解雖然沒有顯示配置,但是實際上已經包含在了啟動類宣告註解@SpringBootApplication中,預設掃描範圍是啟動類所在包及其子包
小結
- 宣告bean的註解:@Component、@Controller、@Service、 @Respository
- @SpringBootApplication具有包掃描作用,預設掃描當前包及其子包
DI詳解
Bean注入:
-
@Autowired註解,預設是按照型別進行,如果存在多個相同型別的bean,將會報出如下錯誤
-
透過以下幾種方案來解決:
1、@Primary --- 設定bean的優先順序
2、@Qualifier ---宣告指明哪個bean(型別指定)
3、@Resource --- 指定bean的名字(名字指定)