響應數據 @ResponseBody 類型:方法註解、類註解 位置:Controller方法、類上 作用:將方法返回值直接響應,如果返回值類型是 實體對象/集合 ,將會轉換為json格式響應 說明:@RestController = @Controller + @ResponseBody 統一響應結 ...
響應數據
@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的名字(名字指定)