1. 程式人生 > >Java的新專案學成線上筆記-day1(六)

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類目錄
工程結構如下:
Java的新專案學成線上筆記-day1(六)

、配置檔案
在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條記錄。