zoukankan      html  css  js  c++  java
  • Springboot & Mybatis 构建restful 服务五

    Springboot & Mybatis 构建restful 服务五

    1 前置条件

    • 成功执行完Springboot & Mybatis 构建restful 服务四

    2 restful service 整合 swigger ui 自动生成 API

    1)修改 POM.xml文件

    添加依赖

            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.2.2</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.2.2</version>
            </dependency>
     

    2)修改 application.properties

    src/main/resources/application.properties

    server.context-path=/accountbalance
     

    3)新建Swagger2Configuration.java

    ​ src/main/java/com/serena/config/Swagger2Configuration.java

    package com.serena.config;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    @Configuration
    @EnableSwagger2
    public class Swagger2Configuration {
        @Bean
        public Docket buildDocket() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(buildApiInf())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.serena.controller"))//要扫描的API(Controller)基础包
                    .paths(PathSelectors.any())
                    .build();
        }
        private ApiInfo buildApiInf() {
            return new ApiInfoBuilder()
                    .title("Spring Boot中使用Swagger2 UI构建AccountBalance API文档")
                    .contact("psj")
                    .version("1.0")
                    .build();
        }
    }
     

    4)修改 SY,添加注解

    ​ src/main/java/com/serena/controller/SY.java

    package com.serena.controller;
    import java.util.List;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    import com.serena.entity.SettleAccount;
    import com.serena.service.ISY;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiImplicitParam;
    import io.swagger.annotations.ApiImplicitParams;
    import io.swagger.annotations.ApiOperation;
    @Api("查找账户余额")
    @RestController
    public class SY {
        @Autowired
        private ISY iSY;
    
    
        private static Logger logg = LoggerFactory.getLogger(SY.class);
    
    
        @ApiOperation("通过账户编号查询账户余额等信息")
        @ApiImplicitParams({
            @ApiImplicitParam(name="accountCode",required=true,dataType="String",paramType="Path")
        })
        @RequestMapping(value="/account/{accountCode}",method = RequestMethod.GET)
        public SettleAccount selectOne(@PathVariable("accountCode")String accountCode){
            logg.info("select account by accountCode,accountCode = {}",accountCode); 
            SettleAccount settleAccount  = iSY.selectByAccountCode(accountCode);
            if(settleAccount == null)
                logg.warn("not found account");
                return settleAccount;
        }
    
    
        @ApiOperation("查询所有账户余额等信息")
        @RequestMapping(value="/accounts",method = RequestMethod.GET)
        public List<SettleAccount> selectAll(){
            List<SettleAccount> list = null;
            logg.info("select all accounts"); 
            list = iSY.selectAccounts();
            if(list == null)
                logg.warn("not found accounts");
            return list;
        }
    
    
        @ApiOperation(value="查询所有账户余额等信息,并导出在 excel 表格中")
        @ApiImplicitParams({
            @ApiImplicitParam(name="fileName",required=true,dataType="String",paramType="Path")
        })
        @RequestMapping(value="/accountsfile/{fileName}",method = RequestMethod.GET)
        public boolean wSelectAll(@PathVariable("fileName")String fileName){
            logg.info("write a file that select accounts "); 
            List<SettleAccount> list = null;
            boolean flag = false;
            list = iSY.selectAccounts();
            if(list == null)
                logg.warn("not found accounts");
            else{
                flag = iSY.createExcel(list, fileName);
            }
            return flag;
        }
    }
     

    5)在终端输入如下测试指令:

    #cd 项目所在目录
    cd /Users/psj/Documents/pro/xm/AccountBalance
    mvn clean package
    cd target
    mkdir /Users/psj/Desktop/t/
    #将 tar 包复制到自己指定目录(/Users/psj/Desktop/t/)
    cp AccountBalance-0.0.1-SNAPSHOT.tar /Users/psj/Desktop/t/
    #cd 到上个操作指定的目录
    cd /Users/psj/Desktop/t
    #解压 tar 包
    tar -xvf AccountBalance-0.0.1-SNAPSHOT.tar
    #此时可查看目录结构如要求所示
    ll
    #运行 可执行jar,测试结果
    java -jar AccountBalance-0.0.1-SNAPSHOT.jar
    #
    #打开浏览器,输入如下网址:
    http://localhost:8101/accountbalance/swagger-ui.html
    #
    http://localhost:8999/accountsfile
    #在下载对话框中指定文件名和保存路径
    #
    #打开新的iterm 窗口(command+n)
    http localhost:8101/accountbalance/accounts
    http localhost:8101/accountbalance/account/U00001
    #返回上个 iterm 窗口,control+c 结束服务
     

     

  • 相关阅读:
    JavaScript中的数组
    JavaScript中的对象
    Highcharts中设置x轴为时间的写法
    CSS 选择器(基础)
    DOM节点
    平衡木蜻蜓
    python2.7 qt4
    C语言优先级
    树莓派与stm32通信
    linux下USB转串口配置
  • 原文地址:https://www.cnblogs.com/serena25/p/6515428.html
Copyright © 2011-2022 走看看