Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring boot集成模板引擎swagger2实现

Spring boot集成模板引擎swagger2实现

作者头像
IT架构圈
发布于 2021-10-21 06:22:37
发布于 2021-10-21 06:22:37
49300
代码可运行
举报
文章被收录于专栏:IT架构圈IT架构圈
运行总次数:0
代码可运行

上次说过springboot其实就是一个CI工具,如何体验出来CI的作用就是持续集成,它可以集成各种的工具,这里说说关于模板的集成引擎和Swagger。

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 内修改默认的静态资源目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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, 增加如下依赖。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

2.编写Controller

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
 **/
@Controller
public 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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!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,增加依赖
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

2.Controller

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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配置类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
@EnableSwagger2
public 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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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更详细,这里只是从入门开始说起。

点击👆卡片,共同学习共同进步,我的坚持你的收获。

在看点这里

好文分享给更多人↓↓

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT架构圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
什么是TRTC?TRTC是怎么实现的?
腾讯实时音视频(Tencent Real-Time Communication,TRTC),这是官方对TRTC的定义。
F颜
2020/06/16
24.8K1
什么是TRTC?TRTC是怎么实现的?
活动回顾丨GMTC全球大前端大会“音视频前端技术创新实践”专场圆满落幕
导语丨GMTC 全球大前端技术大会是由极客邦科技旗下 InfoQ 中国主办的技术盛会,关注前端、移动、AI 应用等多个技术领域,促进全球技术交流,推动国内技术升级。主要面向各行业对前端、移动开发、AI 技术感兴趣的中高端技术人员,大会聚焦前沿技术及实践经验,旨在帮助参会者了解前端 & 移动开发领域的技术趋势与实践案例。 随着音视频技术的快速发展,音视频实时互动在多个领域中都得到了广泛的应用。本次 GMTC 全球大前端大会“音视频前端技术创新实践”专场就邀请到了腾讯云音视频领域的四位老师,他们通过分
腾讯云音视频
2021/12/24
1.1K0
使用TRTC Web SDK实现实时音视频通话
在使用 TRTC Web SDK 中,经常需要使用到两个对象,Client 客户端对象,Stream 流对象:
yuliang
2021/03/03
3.6K0
TRTC Android端开发接入学习之常见问题(十一)
V1和V2主要区别在于IM的SDK是否内嵌于TRTC中,V1线路是内嵌,而V2则可选,默认不打包IM的SDK包。V2在通话质量、线路规格、接入难度以及功能扩展上均比V1更有优势。
腾讯云-hongyang
2020/09/27
3.1K0
实时音视频SDK迎来最新的 6.8 版本
腾讯实时音视频=TRTC,全称Tencent Real-Time Communication。拥有QQ十几年来在音视频技术上的积累,致力于帮助企业快速搭建低成本、高品质音视频通讯能力的完整解决方案。 1.我们在 Windows 版本中新增了 socks5 的支持,对于金融和保险类客户,可以通过搭建代理服务器解决内外网通信问题。 该功能通过调用 ITXLiteAVNetworkProxy.h 中的 setSocks5Proxy 接口进行设置,可以参考 Socks5 代理服务器的的搭建方案: /*
腾讯即时通信IM
2020/06/19
2.3K0
实时音视频 TRTC 常见问题汇总---咨询问题篇
TRTC 是腾讯云基于 QQ 十多年来在音视频通话技术上积累,结合腾讯浏览服务 TBS WebRTC 能力与腾讯实时音视频 SDK ,为客户提供多平台互通高品质可定制化的 实时音视频互通服务 解决方案。 (1)您可以通过“crtl+F”(win)、“command+F”(mac)搜索关键字。 (2)若没有您想要的问答,欢迎在评论区提问、留言和交流,笔者会定期解答疑惑。 (3)最新产品动态与变更以官网文档为准。
TRTC小百科
2021/09/16
8.9K2
基于WebAssembly构建Web端音视频通话引擎
大家好,我叫田建华。今天分享的主题是基于WebAssembly构建Web端音视频通话引擎。今天将从背景、WebAssembly引擎、方案落地和问题及展望四个方面展开介绍。
腾讯云音视频
2023/07/27
6940
基于WebAssembly构建Web端音视频通话引擎
使用TRTC Web SDK实现互动直播
以主播身份进入房间进行直播的场景跟实时音视频通话场景流程一样,请参考使用TRTC Web SDK实现实时音视频通话。本文主要介绍以观众身份进入直播间。
yuliang
2021/03/02
2.6K0
还在为不熟悉音视频使用而头疼吗?借助TRTC 云助手so easy!
先来了解一下TRTC(Tencent Real-Time Communication),它是腾讯云推出的一款实时音视频通信服务,它提供了高质量的音视频传输、流畅的互动体验以及丰富的功能接口。
三掌柜
2024/06/06
2202
还在为不熟悉音视频使用而头疼吗?借助TRTC 云助手so easy!
实时互动点燃创新增长新引擎(内附报告下载)
导语  上周,实时互动产业发展和生态合作论坛在线上举办,来自腾讯云音视频的薛笛及刘连响两位老师分别做了致辞和演讲。腾讯云基于过往20多年在实时音视频领域的技术积累,以及在金融、医疗、工业等产业互联网的深耕经验,希望通过开箱即用的实时互动应用开发工具,助力各行各业实现场景创新。(文末附《实时互动产业发展研究报告》下载) 在论坛上,来自腾讯云音视频的专家工程师刘连响老师,为我们分享了主题为——实时互动助力行业场景创新的精彩演讲。 首先刘老师简单介绍了WebRTC。提到实时通信大家一定会想到WebRTC。Web
腾讯云音视频
2022/06/20
1.6K0
实时互动点燃创新增长新引擎(内附报告下载)
Q&A丨实时音视频 TRTC 技术问答强势来袭
我们针对实时音视频用户在后台提交的问题,归纳了近期咨询比较多的问答,供各位用户参考。 QUESTION1  Q :画面出现呼吸效应(一下清晰一下模糊),是什么原因?  A :呼吸效应产生主要有2种情况:  1.定焦镜头,I帧太小导致遇到I帧解码时模糊,想办法提高I帧的大小,可以尝试从vbr改为cbr,setVideoEncoderParam中设置videoBitrate=minVideoBitrate即为cbr。  2.变焦镜头,硬件不断聚焦。想办法改善拍摄环境,例如优化光源。 QUESTION2  
腾讯即时通信IM
2021/01/15
2.4K0
iOS音视频接入 - TRTC常见问题
在 TRTC SDK 的示例代码中提供了一个叫做GenerateTestUserSig的开源模块,您只需要将其中的 SDKAPPID、EXPIRETIME 和 SECRETKEY 三个成员变量修改成您自己的配置,就可以调用genTestUserSig()函数获取计算好的 UserSig。
小明同学接音视频
2020/10/21
2.9K0
iOS音视频接入 - TRTC常见问题
新知 | RT-ONE™&TRTC赋能实时音视频场景创新
今年腾讯云音视频发布了“三合一”的RT-ONE™网络。该网络整合了腾讯云实时通信网络(TRTC)、即时通信网络(IM)以及流媒体分发网络(CDN)三张网络,为业界最完整的音视频通信PaaS平台构建基座,面向教育、零售、泛娱乐等行业需求提供服务。本次新知系列的第一堂课,我们邀请到了腾讯云音视频的技术导师 —— 刘连响,为大家详解RT-ONE™并分享RT-ONE™&TRTC赋能实时音视频场景的一些创新。 接下来的5周,每周四晚上7:30,我们都会在腾讯云音视频视频号、开源中国、InfoQ、51CTO、云
腾讯云音视频
2021/11/22
2.2K6
实时音视频开发学习14 - 常见问题
V1和V2主要区别在于IM的SDK是否内嵌于TRTC中,V1线路是内嵌,而V2则可选,默认不打包IM的SDK包。V2在通话质量、线路规格、接入难度以及功能扩展上均比V1更有优势。
金林学音视频
2020/08/30
2.7K0
实时音视频开发学习14 - 常见问题
Q&A丨实时音视频 TRTC 技术问答第一期强势来袭
我们针对实时音视频用户在后台提交的问题,归纳了近期咨询比较多的问答,供各位用户参考。
Mosen
2020/10/16
2K0
Q&A丨实时音视频 TRTC 技术问答第一期强势来袭
TRTC监控仪表盘怎么看?
腾讯云实时音视频 TRTC 为开发者提供了线上通话质量详情的记录的监控仪表盘,开发者可以通过监控仪表盘查看通话详情和信息,了解终端用户的通话状态。
jansonjiang
2020/03/07
4.3K0
TRTC监控仪表盘怎么看?
【实时音视频TRTC】音视频互动解决方案,跨平台、小程序、低代码深度合作!
腾讯云音视频,涵盖音视频通信基础网络 RT-ONE,云直播、实时音视频 TRTC、即时通信 IM、云点播等音视频 PaaS 产品,提供音视频一站式解决方案。
TCS-F
2021/09/29
1.5K0
【实时音视频TRTC】音视频互动解决方案,跨平台、小程序、低代码深度合作!
vue使用TRTC Web SDK实现多人会话场景
基本的对话场景请参考 使用TRTC Web SDK实现实时音视频通话 。本文主要讲述 vue 使用 TRTC Web SDK 来实现多人会议的功能,废话不多说直接上代码:(注意下方代码中 sdkAppId 请使用自己的)
yuliang
2021/03/03
2.7K0
一站式落地AI实时语音对话,腾讯云TRTC开启AI交互新玩法
在人工智能技术日益普及的今天,GPT-4o所展现出的实时语音对话能力再次吸引了大量关注。但AI语音助手其实并不新鲜,“你好,Siri”这句话,大家都已经说了好多年。那为什么GPT-4o的发布,仍能够再次唤起人们对AI语音的畅想?答案的关键或许在于GPT-4o比Siri们,快得多。
腾讯云音视频
2024/09/06
4450
一站式落地AI实时语音对话,腾讯云TRTC开启AI交互新玩法
网易云信流媒体服务端架构设计与实现
大家好,我叫鲁林俊,很高兴参加LiveVideoStackCon 2020线上峰会,本次我分享的主题是网易云信流媒体服务端架构设计与实现。
LiveVideoStack
2020/07/13
1.9K0
网易云信流媒体服务端架构设计与实现
推荐阅读
相关推荐
什么是TRTC?TRTC是怎么实现的?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验