spring boot之swagger与fastjson的使用

目录

配置准备

简单示例

增删改的使用

添加参数说明

getter,setter的使用

Translator转换



配置准备

pom文件中添加依赖:

       <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

添加配置类,命名SwaggerConfig

添加如下代码

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket swaggerSpringMvcPlugin() {
        return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).build();
    }
}

简单示例

 添加SwaggerController类,

添加如下代码

@Api(description = "Swagger接口")
@RestController
@RequestMapping("/swagger")
public class SwaggerController {
    /**
     * 商品service
     */
    @Autowired
    private GoodsService goodsService;

    @ApiOperation(value = "查询商品", notes = "查询商品")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "goodsId", value = "商品编码", required = true, paramType = "query", dataType = "String")
    })
    @RequestMapping(value = "/listGoods", method = RequestMethod.GET)
    public GoodsDO listGoods(@RequestParam("goodsId") String id) {
        Integer queryId = Integer.valueOf(id);
        GoodsDO goodsDO = goodsService.getById(queryId);
        System.out.println("print result***");
        System.out.println(goodsDO);
        return goodsDO;
    }

 
}


编译运行,打开http://localhost:8080/swagger-ui.html#/

 至此,简单的swagger应用实例完成

增删改的使用

在controller层SwaggerController中继续添加增删改三个方法,代码为:

    @ApiOperation(value = "新增", notes = "新增")
    @RequestMapping(value = "/create", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    public void addGoods(@RequestBody GoodsDO goodsDO) {
        goodsService.addRecord(goodsDO);

    }

    @ApiOperation(value = "修改", notes = "修改")
    @RequestMapping(value = "/update", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
    public void update(@RequestBody ModifyParam modifyParam) {
        GoodsDO goods = GoodsTranslator.transParamToDO(modifyParam);
        GoodsDO goodsDO = GoodsTranslator.translatorWithFastJson(modifyParam);
        System.out.println("update:::");
        goodsService.modifyRecord(goodsDO);
    }

    @ApiOperation(value = "删除", notes = "删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "goodsId", value = "标识", required = true, paramType = "query", dataType = "String")
    })
    @RequestMapping(value = "/delete", method = RequestMethod.DELETE)
    public void delete(@RequestParam("goodsId") String goodsId) {
        System.out.println("delete:::" + goodsId);
        GoodsDO goodsDO = new GoodsDO();
        goodsDO.setId(Integer.valueOf(goodsId));
        goodsService.deleteRecord(goodsDO);
    }

刷新  http://localhost:8080/swagger-ui.html#/

 新增一个商品记录:

数据库新增后

修改一条记录

修改后数据库中的记录

添加参数说明

在controller中另建一个param文件夹用于放置各个查询参数、修改参数的实体,通过添加说明在swagger中显示各个参数的意义。

1. 新建一个ModifyParam类 

2. 添加如下代码

@ApiModel("规则查询参数")
public class ModifyParam {

    @ApiModelProperty("id")
    private Integer id;

    @ApiModelProperty("编码")
    private Long code;

    @ApiModelProperty("名称")
    private String name;

    @ApiModelProperty("条形码")
    private String barcode;

    @ApiModelProperty("价格")
    private BigDecimal price;

    @ApiModelProperty("库存数量")
    private Long stock;
}

3. 修改controller中更新方法的代码,这里的转换在下一小节中


    @ApiOperation(value = "修改", notes = "修改")
    @RequestMapping(value = "/update", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
    public void update(@RequestBody ModifyParam modifyParam) {
        GoodsDO goods = GoodsTranslator.transParamToDO(modifyParam);
        GoodsDO goodsDO = GoodsTranslator.translatorWithFastJson(modifyParam);
        System.out.println("update:::");
        goodsService.modifyRecord(goodsDO);
    }

4. 刷新swagger,查看更新方法

在Models中可以看到相关实体

getter,setter的使用

在实体类中,根据需要会写大量的get,set方法,为避免重复操作,简化代码,可以使用相关插件,使实体类自动生成相关get,set方法。

1. pom添加依赖

 <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.6</version>
            <scope>provided</scope>
        </dependency>

 

2. 安装插件:Settings->Plugins->Browse Repositories中安装Lombok重启IDEA

3. 重新编译后在target的相关class文件中可以看到生成了get,set方法

Translator转换

在controller接收传入参数的时候,或者将查询的结果封装成VO,DTO形式返回时,通常需要进行一些转换。可利用阿里的fastjson进行快速转换。fastjson可学习https://github.com/alibaba/fastjson

1. 添加pom依赖

       <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.56</version>
        </dependency>

2. 在controller层新建两个转换类,商品转换类和通用转换类

 3. 商品转换类GoodsTranslator代码:

/**
 * @Author: windmill
 * @Description:商品转换类
 * @Date: 2019/4/2 19:32
 */
public class GoodsTranslator {
    /**
     * 将修改参数转DO
     *
     * @param modifyParam
     * @return
     */
    public static GoodsDO transParamToDO(ModifyParam modifyParam) {
        GoodsDO goodsDO = new GoodsDO();

        goodsDO.setId(modifyParam.getId());
        goodsDO.setBarcode(modifyParam.getBarcode());
        goodsDO.setCode(modifyParam.getCode());
        goodsDO.setName(modifyParam.getName());
        goodsDO.setPrice(modifyParam.getPrice());
        goodsDO.setStock(modifyParam.getStock());
        return goodsDO;
    }

    /**
     * 通过 fastjson 将修改参数转换为DO
     *
     * @param modifyParam
     * @return
     */
    public static GoodsDO translatorWithFastJson(ModifyParam modifyParam) {
        return JSON.parseObject(JSON.toJSONString(modifyParam), GoodsDO.class);
    }

}

上述两种转换方法,一种是利用get,set手动转换,另一中则通过利用fastjson快速转换

4. 通用转换类,提供单个对象转换和列表转换

**
 * @Author: windmill
 * @Description:通过fastjson对目标对象或对象列表进行转换
 * @Date: 2019/4/2 19:42
 */
public class CommonTranslator {
    /**
     * Fastjson单个对象转换
     *
     * @param source 要转换的对象
     * @param target 转换后的目标对象
     * @param <T> 对象模板类型
     * @return 返回JSON转换的匹配对象
     */
    public static <T> T translator(Object source, Class<T> target) {
        return JSON.parseObject(JSON.toJSONString(source), target);
    }

    /**
     * 通过fastjson进行列表转换
     *
     * @param objectList 转换对象的列表集合
     * @param target     转换后的目标对象集合
     * @param <T>
     * @return 返回转换后对象的匹配集合
     */
    public static <T> List<T> listTranslator(List objectList, Class<T> target) {
        List<T> tList = new ArrayList();
        objectList.forEach((object) -> {
            T t = JSON.parseObject(JSON.toJSONString(object), target);
            tList.add(t);
        });
        return tList;
    }
}

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Boot是一个开源的Java开发框架,而Swagger是一个用于构建、发布、文档化和管理API的工具。下面详细介绍如何在Spring Boot中整合Swagger。 首先,你需要在pom.xml文件中添加Swagger的依赖项。在<dependencies>标签中添加以下代码: ```xml <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.10.5</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.10.5</version> </dependency> ``` 然后,你需要在Spring Boot的配置类中添加相关的注解和配置。创建一个SwaggerConfig.java文件,添加以下代码: ```java @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("your.package.name")) .paths(PathSelectors.any()) .build(); } @Bean public UiConfiguration uiConfig() { return new UiConfiguration(null, "list", "alpha", "schema", UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS, false, true, 60000L); } } ``` 在上面的代码中,你需要将"your.package.name"替换为你的应用程序的包名。这将扫描该包下的所有控制器,生成API文档。 接下来,你可以启动你的Spring Boot应用程序,并访问"http://localhost:8080/swagger-ui.html"来查看生成的API文档。你将看到所有的控制器和它们的方法以及相关的参数和注释。 如果你想修改API的文档信息,你可以使用Swagger中的注解来添加说明和标注。例如,你可以在控制器的方法上添加@ApiOperation注解来描述该方法的作用。 综上所述,将Swagger整合到Spring Boot中是很简单的。你只需要添加依赖项,配置SwaggerConfig类,然后访问Swagger UI来查看生成的API文档。同时,你可以使用Swagger注解来进一步完善API文档。希望这个教程可以帮助你理解如何在Spring Boot使用Swagger
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值