专栏首页编程坑太多『互联网架构』软件架构-Spring boot集成模板引擎swagger2实现(87)

『互联网架构』软件架构-Spring boot集成模板引擎swagger2实现(87)

上次说过springboot其实就是一个CI工具,如何体验出来CI的作用就是持续集成,它可以集成各种的工具,这里说说关于模板的集成引擎和Swagger。源码:https://github.com/limingios/netFuture/tree/master/源码/『互联网架构』软件架构-Spring boot集成模板引擎实现(86)/

(一)Spring boot 集成模板引擎实现web应用

  • 静态资源访问

静态资源

js, css, html, 图片,音视频

静态资源路径

系统可以直接访问的路径,且路径下的所有文件均可被用户直接读取。Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则:/static,/public,/resources,/META-INF/resources

在classpath下面创建static目录,并且加入一个图片a.png

加入之后,然后不需要重启直接访问:http://localhost:8888/a.jpg

properties 内修改默认的静态资源目录

spring.resources.static-locations

(二)集成模板引擎

Spring Boot强烈建议使用模板引擎渲染html页面,避免使用JSP,若一定要使用JSP将无法实现Spring Boot的多种特性。Thymeleaf(spring boot推荐), FreeMarker。

  • Thymeleaf

Spring boot默认的模板配置路径为:src/main/resources/templates。当然也可以修改这个路径,通过配置文件的属性,这个在上次的配置的文件的里面有详细的解释配置里面有。

集成Thymeleaf步骤

1.修改pom.xml, 增加如下依赖。

    <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-thymeleaf</artifactId>    </dependency>

2.编写Controller

import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.RequestMapping;
/** * @program: springboot3d * @description: ${description} * @author: LiMing * @create: 2019-06-09 09:15 **/@Controllerpublic class SampleController {
    @RequestMapping("/testThymeleaf")    public String testThymeleaf(ModelMap map) {        // 设置属性        map.addAttribute("name", "idig8");        // testThymeleaf:为模板文件的名称        // 对应src/main/resources/templates/testThymeleaf.html        return "testThymeleaf";    }}

3.在src/main/resources/下面建立templates/testThymeleaf.html

<!DOCTYPE html><html xmlns:th="http://www.w3.org/1999/xhtml"><head lang="en">    <meta charset="UTF-8" />    <title>testThymeleaf</title></head><body><h1 th:text="${name}">idig88</h1></body></html>

4.运行spring boot,浏览器输入:http://localhost:8888/testThymeleaf

  • FreeMarker 1.修改pom.xml,增加依赖
<dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-freemarker</artifactId></dependency>

2.Controller

@RequestMapping("/testFreemarker")    public String testFreemarker(Map<String,String> map) {        map.put("name", "张三");        return "hello"; //默认为src/main/resources/templates/hello.flt    }

3.hello.flt,目录为:src\main\resources\templates

<html><body>    hello, ${name}</body></html>

4.运行spring boot main,浏览器输入如下地址:http://localhost:8881/testFreemarker

(二)集成Swagger2构建RESTful API文档

  • Swagger2 1.随项目自动生成强大RESTful API文档,减少工作量 2.API文档与代码整合在一起,便于同步更新API说明 3.页面测试功能来调试每个RESTful API
  • 集成Swagger2步骤 1.修改pom.xml, 添加Swagger2依赖
<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.创建Swagger2配置类

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;
/** * @program: springboot3d * @description: ${description} * @author: LiMing * @create: 2019-06-09 10:20 **/@Configuration@EnableSwagger2public class SwaggerConfig {    @Bean    public Docket createRestApi() {        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .select()                .apis(RequestHandlerSelectors.basePackage("com.idig8.springboot"))// 指定扫描包下面的注解                .paths(PathSelectors.any())                .build();    }    // 创建api的基本信息    private ApiInfo apiInfo() {        return new ApiInfoBuilder()                .title("集成Swagger2构建RESTful APIs")                .description("集成Swagger2构建RESTful APIs")                .termsOfServiceUrl("https://www.idig8.com")                .contact("欢迎关注:编程坑太多")                .version("1.0.0")                .build();    }}

2.创建Controller: SwaggerController.java

import io.swagger.annotations.ApiImplicitParam;import io.swagger.annotations.ApiOperation;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 java.util.HashMap;import java.util.Map;
/** * @program: springboot3d * @description: ${description} * @author: LiMing * @create: 2019-06-09 10:22 **/@RestController@RequestMapping(value="/swagger")public class SwaggerController {    @ApiOperation(value="获取用户信息", notes="根据id来获取用户详细信息")    @ApiImplicitParam(name="id", value="用户ID", required=true, dataType="String")    @RequestMapping(value="/{id}", method= RequestMethod.GET)    public Map<String,String> getInfo(@PathVariable String id) {        Map<String ,String> map = new HashMap<String, String>();        map.put("name", "张三");        map.put("age", "34");        return map;    }}

4.启动Spring boot,访问Swagger UI界面:http://localhost:8881/swagger-ui.html

PS:今天说了简单模板引擎和swagger2的介绍,只是功能介绍详细的细节没有做阐述。先从会用开始吧,具体的细节还是看官方的api更详细,这里只是从入门开始说起。

本文分享自微信公众号 - 编程坑太多(idig88),作者:诸葛阿明

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 『中级篇』docker之CI/CD持续集成—GitLab CI服务器(71)

    PS:整个这个功能是否给你一个很大的想象空间,任何的软件的项目,可以通过ci-Pipelines方式,来定义自己的Pipelines,在测试,部署。很大很的发挥...

    IT故事会
  • 『互联网架构』软件架构-解密电商系统营销-会员模块业务(73)

    解决方案是:类似新华字典一样,redis里面针对某个活动只存储key值,内容保存在JVM cache中。因为目前都是存在JVM中,如果是分布式同步下,需要使用z...

    IT故事会
  • 『中级篇』docker之CI/CD持续集成—GitLab CI服务器(71)

    PS:整个这个功能是否给你一个很大的想象空间,任何的软件的项目,可以通过ci-Pipelines方式,来定义自己的Pipelines,在测试,部署。很大很的发挥...

    IT故事会
  • Java爬虫及分布式部署

    待你如初见
  • SpringBoot入门建站全系列(十七)整合ActiveMq(JMS类消息队列)

    消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间...

    品茗IT
  • 【Redis版】spring boot高性能实现二维码扫码登录(中)

      本打算用CountDownLatch来实现,但有个问题我没有考虑,就是当用户APP没有扫二维码的时候,线程会阻塞5分钟,这反而造成性能的下降。好吧,现在回归...

    java乐园
  • SpringBoot使用validator校验

    dalaoyang
  • SpringBoot 发送邮件

    喜欢天文的pony站长
  • 从前端角度浅谈代码对SEO的影响!

    正文内容:通过上面的简单介绍,想必大家也会觉得:其实前端真正对SEO比较有影响作用的还是HTML。

    屈兴东
  • Java基础:一、对象和方法(2)

    每个类都属于一种类型,通过基本关键字class来创建类,引入新的类型,通过类来创建对象,每个对象拥有类的属性和方法,并且每个对象都是唯一的。

    桑鱼

扫码关注云+社区

领取腾讯云代金券