Java的新專案學成線上筆記-day1(六)
5.2定義介面
5.2.1 定義請求及響應型別
1、定義請求模型QueryPageRequest,此模型作為查詢條件型別 為後期擴充套件需求,請求型別統一繼承RequestData型別。
package com.xuecheng.framework.domain.cms.request; import com.xuecheng.framework.model.request.RequestData; import lombok.Data; @Data public class QueryPageRequest extends RequestData { //站點id private String siteId; //頁面ID private String pageId; //頁面名稱 private String pageName; //別名 private String pageAliase; //模版id private String templateId; }
2、響應結果型別,分頁查詢統一使用QueryResponseResult 5.2.2 定義介面
在Api介面工程專門定義介面,在Api工程單獨定義介面的原因如下: 1、介面集中管理
2、Api工程的介面將作為各微服務遠端呼叫使用。
頁面查詢介面定義如下:
public interface CmsPageControllerApi { public QueryResponseResult findList(int page, int size, QueryPageRequest queryPageRequest) ; }
此介面編寫後會在CMS服務工程編寫Controller類實現此介面。
6 頁面查詢服務端開發 6.1 建立CMS服務工程 6.1.1 建立CMS工程結構
建立maven工程, CMS工程的名稱為 xc-service-manage-cms,父工程為xc-framework-parent。
pom.xml如下:
public interface CmsPageControllerApi { public QueryResponseResult findList(int page, int size, QueryPageRequest queryPageRequest) ; } <?xml version="1.0" encoding="UTF‐8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 [url]http://maven.apache.org/xsd/maven[/url]‐4.0.0.xsd"> <parent> <artifactId>xc‐framework‐parent</artifactId> <groupId>com.xuecheng</groupId> <version>1.0‐SNAPSHOT</version> <relativePath>../xc‐framework‐parent/pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>xc‐service‐manage‐cms</artifactId> <dependencies> <dependency> <groupId>com.xuecheng</groupId> <artifactId>xc‐service‐api</artifactId> <version>1.0‐SNAPSHOT</version> </dependency> <dependency> <groupId>com.xuecheng</groupId> <artifactId>xc‐framework‐model</artifactId> <version>1.0‐SNAPSHOT</version> </dependency> <dependency> <groupId>com.xuecheng</groupId> <artifactId>xc‐framework‐utils</artifactId> <version>1.0‐SNAPSHOT</version> </dependency> <dependency> <groupId>com.xuecheng</groupId> <artifactId>xc‐framework‐common</artifactId> <version>1.0‐SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐freemarker</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐data‐mongodb</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐amqp</artifactId> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐test</artifactId> </dependency> </dependencies> </project>
由於cms工程要連線mongodb所以需要在在cms服務端工程新增如下依賴: 專案使用spring data mongodb操作mongodb資料庫
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐data‐mongodb</artifactId> </dependency>
2、建立基本的包結構: com.xuecheng.manage_cms.config:配置類目錄,資料庫配置、MQ配置等
com.xuecheng.manage_cms.dao:dao介面目錄 com.xuecheng.manage_cms.service:service類目錄
com.xuecheng.manage_cms.web.controller:controller類目錄
工程結構如下:
、配置檔案
在classpath下配置application.yml
server: port: 31001 spring: application: name: xc‐service‐manage‐cms data: mongodb: uri: mongodb://root:[email protected]:27017 database: xc_cms
另外從課程資料下“cms工程配置檔案”中拷貝logback-spring.xml,此檔案為工程的日誌配置檔案。
4、SpringBoot 啟動類
Spring Boot應用需要建立一個應用啟動類,啟動過程中會掃描Bean並注入spring 容器 注意:此類建立在本工程com.xuecheng.manage_cms包下 :
@SpringBootApplication @EntityScan("com.xuecheng.framework.domain.cms")//掃描實體類 @ComponentScan(basePackages={"com.xuecheng.api"})//掃描介面 @ComponentScan(basePackages={"com.xuecheng.manage_cms"})//掃描本專案下的所有類 public class ManageCmsApplication { public static void main(String[] args) { SpringApplication.run(ManageCmsApplication.class,args); } }
1.2 測試Controller
使用springMVC完成介面實現開發,這裡暫時使用測試資料,稍後會讓controller呼叫service來查詢資料。
package com.xuecheng.manage_cms.web.controller; import com.xuecheng.api.cms.CmsPageControllerApi; import com.xuecheng.framework.domain.cms.request.QueryPageRequest; import com.xuecheng.framework.model.response.QueryResponseResult; import com.xuecheng.manage_cms.service.PageService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @RestController public class CmsPageController implements CmsPageControllerApi { @Override @GetMapping("/list/{page}/{size}") public QueryResponseResult findList(@PathVariable("page") int page,@PathVariable("size") int size,QueryPageRequest queryPageRequest) { //暫時採用測試資料,測試介面是否可以正常執行 QueryResult queryResult = new QueryResult(); queryResult.setTotal(2); //靜態資料列表 List list = new ArrayList(); CmsPage cmsPage = new CmsPage(); cmsPage.setPageName("測試頁面"); list.add(cmsPage) queryResult.setList(list); QueryResponseResult queryResponseResult = new QueryResponseResult(CommonCode.SUCCESS,queryResult); return queryResponseResult; } }
使用瀏覽器測試
輸入:http://localhost:31001/cms/page/list/1/10 查詢第1頁,每頁顯示10條記錄。