为Springboot添加Swagger

为Springboot添加Swagger,第1张

- 打开用户控制器,默认显示用户控制器下3个API方法

- 打开添加用户信息后如下:

- 打开“通过用户名获取用户信息”,显示如下:

文章参考文献地址:

模板引擎这个词,咋听起来,有点高大上的意味。

实际上,模板引擎是非常平易近人的技术。譬如大家可能都比较熟悉的 JSP ,就是一种比较典型的模板引擎。

当浏览器将请求抛给控制器,控制器处理好数据后,就跳转 JSP 等模板引擎页面。注意在跳转的同时,还会将数据组装好,也交给模板引擎处理。

模板引擎会根据数据,和模板引擎的规则,动态生成 HTML 页面,最后返回给浏览器显示。

我们使用 Spring Boot 开发 Web 项目,大体上有两种方式。

第一种方式,是后端服务化的方式,也是当前的主流方式。前端是静态的 HTML 页面,通过 Ajax 请求 Spring Boot 的后端接口。 Spring Boot 返回数据一般采用 JSON 格式,前端接收后将数据显示。

第二种方式,是采取模板引擎的方式。前端的请求,到达 Spring Boot 的控制器后,控制器处理请求,然后将返回数据交给模板引擎。模板引擎负责根据数据生成 HTML 页面,最后将 HTML 返回给浏览器。

我个人比较推荐第一种方式,说一下该方式的几个优点:

本篇是讲模板引擎,也得说说模板引擎的优点,王婆卖瓜不能光夸草莓啊。模板引擎开发的页面,对搜索引擎 SEO 比较友好;还有就是简单的页面,如果用模板引擎开发速度比较快,毕竟模板化的方法,目的就是减少重复提高效率。

Spring Boot 支持的模板引擎种类很多,常见的有 FreeMarker 、 Thymeleaf 、 JSP 。

因为这些模板引擎使用的用户都不少,所以我们逐一介绍下其实现过程。

至于孰优孰劣,请各位看官自行评价。正所谓:尺有所短,寸有所长,各取所爱,万物生长!

本篇我们开发一个商品浏览项目实例。

此处说一个我个人的经验:在做一个项目或一个模块的时候,不要一开始就动手写代码,最好是谋定而后动。

我们作为程序员,实际上是整个程序世界的总指挥。应该先整体规划,再实现局部。这种总分型的开发方法便于我们理顺思路,提高编码效率!

好的,我们来思考下,实现商品浏览项目实例的整体流程:

整体流程

可以看到,我们是先建立了控制器方法和页面,再去实现其中的具体细节。这样可以让我们的思维保持连贯性和整体性,在做一些页面和方法较多的项目时,会感觉更加顺畅。

我们按整体流程,使用 FreeMarker 模板引擎,来实现商品浏览功能。

使用 Spring Initializr 创建项目,Spring Boot 版本选择 2.2.5 , Group 为com.imooc, Artifact 为spring-boot-freemarker,生成项目后导入 Eclipse 开发环境。

引入 Web 项目及 FreeMarker 模板相关的依赖项,代码如下:

实例:

创建控制器类,由于是商品相关的控制器,所以命名为 GoodsController ,代码如下:

实例:

我们具体解释下该类的作用。

我们resource/templates目录下新建商品页面goods.ftl,先不必实现具体功能,代码如下:

实例:

此时我们启动项目,然后访问http://127.0.0.1:8080/goods,即可显示对应页面内容。

定义商品类 GoodsDo 用来描述商品信息,注意 Do 表示数据模型对象(Data Object),代码如下:

实例:

然后我们编写服务类 GoodsService ,提供获取商品列表的方法。注意此处仅仅是演示模板引擎,并不需要访问数据库,直接返回一个指定内容的商品列表。

实例:

此时,我们的控制器就可以注入 GoodsService 类型的组件,然后调用其方法了。

实例:

注意model.addAttribute("goodsList", goodsService.getGoodsList()) ,我们将商品列表相关的数据交给模板引擎去处理。

此时我们可以根据 FreeMarker 模板引擎,按模板规则显示商品信息了。

实例:

注意我们通过 FreeMarker 的模板语法,输出了商品列表信息。关于 FreeMarker 模板引擎更多的语法规则,感兴趣的同学可以后续查阅更多资料。

启动项目,打开浏览器访问http://127.0.0.1:8080/goods,即可查看输出结果。

Thymeleaf 和 FreeMarker ,都是模板引擎,使用方法基本类似。此处我们仅仅是给出一个范例,不再做过多的解释。

使用 Spring Initializr 创建项目, Spring Boot 版本选择 2.2.5 , Group 为com.imooc, Artifact 为spring-boot-thymeleaf,生成项目后导入 Eclipse 开发环境。

引入 Web 项目及 Thymeleaf 模板相关的依赖项。

实例:

创建控制器类, GoodsController , Thymeleaf 直接使用 HTML 作为模板页面,故代码如下:

实例:

我们在resource/templates目录下新建商品页面goods.html,先不必实现具体功能,代码如下:

实例:

此时我们启动项目,然后访问http://127.0.0.1:8080/goods,即可显示对应页面内容。

商品类 GoodsDo ,服务类 GoodsService ,这两个类与上面没有区别直接放出代码。

实例:

实例:

好的,此时我们的控制器就可以注入 GoodsService 类型的组件,然后调用其方法了。

实例:

此时我们可以根据 Thymeleaf 模板引擎,按模板规则显示商品信息了。

实例:

注意我们通过 Thymeleaf 的模板语法,输出了商品列表信息。关于 Thymeleaf 模板引擎更多的语法规则,感兴趣的同学可以后续查阅更多资料。

启动项目,打开浏览器访问http://127.0.0.1:8080/goods,即可查看输出结果。

到此,大家基本上也能发现,这两种方式除了模板页面文件内容不同,其他地方基本都是一模一样的。

也就是说,模板引擎主要负责通过一些模板标签,将控制器返回的数据解析为网页。

注意 Spring Boot 官方已经不推荐使用 JSP 了,确实 *** 作起来也比较麻烦。但是由于 JSP 用户体量还是比较大的,所以此处还是简单演示下,开发步骤与 FreeMarker / Thymeleaf 基本一致。

使用 Spring Initializr 创建项目, Spring Boot 版本选择 2.2.5 , Group 为com.imooc, Artifact 为spring-boot-jsp,生成项目后导入 Eclipse 开发环境。

引入 Web 项目及 JSP 模板相关的依赖项。

实例:

创建控制器类, GoodsController ,代码如下:

实例:

手工添加src/main/webapp及子目录如下,同时目录下放一个 goods.jsp 用于测试。注意该目录是一个 Source Folder 源代码目录,不是普通文件夹目录。

spring-boot-jsp 项目结构

实例:

注意,我们还需要添加一个视图解析器,实现 JSP 页面往指定目录跳转。

实例:

此时我们启动项目,然后访问http://127.0.0.1:8080/goods,即可显示对应页面内容。

商品类 GoodsDo ,服务类 GoodsService ,这两个类与上面没有区别直接放出代码。

实例:

实例:

好的,此时我们的控制器就可以注入 GoodsService 类型的组件,然后调用其方法了。

实例:

此时我们可以根据 JSP 模板引擎,按模板规则显示商品信息了。

实例:

注意我们通过 JSP 的模板语法,输出了商品列表信息。关于 JSP 模板引擎更多的语法规则,感兴趣的同学可以后续查阅更多资料。

启动项目,打开浏览器访问http://127.0.0.1:8080/goods,即可查看输出结果。

最后大家应该也发现了, FreeMarker 和 Thymeleaf 的用法几乎是一模一样的,而 JSP 还需要手工添加一些目录和配置。

三种方式各有优劣, FreeMarker 模板语法比较简洁, Thymeleaf 可以直接使用 HTML 作为模板文件, JSP 用户群体广泛。

但是三种方式,都是一种模板引擎而已,将控制器返回数据转化为 HTML 页面显示,本质上没啥区别,大家对模板引擎有一个了解即可。

.首先在edu的pom里面导入vod的依赖

<dependency>

<groupId>cn.yl</groupId>

<artifactId>service_vod</artifactId>

<version>0.0.1-SNAPSHOT</version>

</dependency>

1

2

3

4

5

1

2

3

4

5

2.在edu的驱动类EDUApplication上的

@SpringBootApplication

1

1

改成

@SpringBootApplication(scanBasePackages = {"cn.yl.service.vod","cn.yl.service.edu"})

1

1

3.(将 vod 的application.yml 改成如 application-vod.yml 的样式名 ) 在edu的 application.yml 里面添加

spring:

profiles:

active: vod

1

2

3

1

2

3

完成,在测试类中测试

-------使用@Autowired 装填自己模块的方法 如果还是报红

将类上的

!!!!!!!!!!!!!!!!!!!!!!

@SpringBootTest

1

1

改成

@SpringBootTest(classes = {EDUApplication.class})

1

1

@Autowired

private VodService vodService

1

2

1

2

文章知识点与官方知识档案匹配

Java技能树首页概览

109559 人正在系统学习中

打开CSDN APP,看更多技术内容

两个SpringBoot模块互相调用_springboot模块间调用_今晚我一个人的博 ...

两个SpringBoot模块互相调用 注意:本文未使用SpringCloud的Feign和OpenFeign 我们直接上 *** 作步骤 1,首先,在启动类加入RestTemplate,在项目启动的时候,使用@Bean注册到容器中 @SpringBootApplication public class GennlifeGdszApplication { ...

继续访问

SpringBoot跨系统调用接口方案_springboot 跨系统_仙道Bob的博客-CSDN...

项目开发中存在系统之间互调问题,又不想用dubbo,这里提供几种springboot方案: 1、使用Feign进行消费(推荐) 2、使用原始httpClient请求 3、使用RestTemplate方法 二、方案 方案一:使用Feign进行消费(推荐) ...

继续访问

Springboot多模块 整合 mybatis maven项目

springboot项目分成多个模块(maven)的简单使用,在加上mybatis 初学者相当实用!

两个SpringBoot模块互相调用

两个SpringBoot模块互相调用 注意:本文未使用SpringCloud的Feign和OpenFeign 我们直接上 *** 作步骤 1,首先,在启动类加入RestTemplate,在项目启动的时候,使用@Bean注册到容器中 @SpringBootApplication public class GennlifeGdszApplication { public static void main(String[] args) { SpringApplication.run(Gennli

继续访问

SpringBoot +Cloud多模块彼此调用笔记_天亮再出发的博客

首先我们用脚手架创建一个SpringBoot项目 父项目的pom文件 <?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...

继续访问

SpringCloud项目跨模块调用报 程序包...不存在 找不到符号

试了常见的所有方法,均不奏效,最终通过比较两个模块的pom文件,得以解决: 在被调用的System模块下加入以下配置: <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId...

继续访问

最新发布 springboot多个service互相调用的事务处理方式

springboot中service之间相互调用

继续访问

Spring Boot多模块化后,服务间调用的坑及解决

添加配置后截图如下,其中common-1.0-SNAPSHOT-exec.jar为可执行jar,common-1.0-SNAPSHOT.jar为普通jar包。common也是SpringBoot工程,SpringBoot工程打包编译时,会生成两种jar包,一种是普通的jar,另一种是可执行jar。默认情况下,这两种jar的名称相同,在不做配置的情况下,普通的jar先生成,可执行jar后生成,造成可执行jar会覆盖普通的jar。| - - - - - common(通用工具类子工程)parent(父类工程)

继续访问

记Spring Boot多模块(跨module)@Resource、@Autowired等bean注入 NULL问题

在启动类上加上@SpringBootApplication(scanBasePackages = {“com.saynight”}) 或者@SpringBootApplication及@ComponentScan(basePackages = {“com.saynight”}) 联合使用 依赖Bean加上@Resource、@Autowire注解,依赖Bean.java文件如CircuitBreakerFactory上加上@Service、@Component注解。 注意bean初始化时代码执行顺序。

继续访问

基于springboot的两个项目之间的远程调用

基于springboot的两个项目之间的远程调用,有问题请提出

两个SpringBoot模块互相调用(基于SpringCloud-Alibaba)

使用SpringCloud-Alibaba组件,利用Nacos,OpenFeign完成远程调用功能一,简介二,环境配置1,首先引入依赖,根据自己使用的spring cloud版本选择2,修改对应服务的配置文件,将服务注册到nacos注册中心三,代码编写1,修改对应服务的启动类,完成服务注册2,编写远程调用方法四,注意事项五,启动项目,此时远程调用接口已经调通,完活收工。 一,简介 在SpringCloud分布式微服务系统中,常会遇到远程调用其他模块的问题,SpringCloud-Alibaba提供了Naco

继续访问

解决SpringBoot引用别的模块无法注入的问题

多模块开发的时候,A模块引入B模块,却无法注入B模块中被。容器中的注解,都是无法在A模块中注入进来。等,只要是你能想到能将类放置在。属性指定包的扫描路径。属性指定包的扫描路径。

继续访问

SpringCloud实现一个模块调用另一个模块的服务

SpringCloud实现一个模块调用另一个模块的服务 简介 基于SpringCloud框架搭建的项目,不同模块之间是无法调用各自的服务的,但是经常我们需要使用这样的模式去开发,那么如何实现不同模块之间的服务调用呢? 准备 1.在需要调用其他模块服务的项目中创建一个package包,里面定义三个类,如下图 在要调用别的模块的模块加依赖 <dependency><groupId...

继续访问

SpringBoot:一个模块加载另一个的模块的配置文件

目的:父工程parent下的两个模块,common和eureka,使eureka模块的配置文件可以读取common的配置文件 首先是配置文件类型,我使用的是yml,使用properties也是一样的 目录结构如图: 在commom模块中添加一些自定义配置 yml文件必须以application-XXX.yml格式命名,不然后续配置无法识别 在eureka模块中的配置 # 配置读取common文件 spring: profiles: active: common 通过${}表达式,就可以拿

继续访问

springboot中各模块间实现bean之间互相调用(service以及自定义的bean)

1.建一个项目,两个module(注意项目和module都是创建类型如下图) 2. 新建module1: demo1 module2: demo3,实现demo3 调用 demo1 的service 建好如图: 3.在demo3中引入demo1的依赖,demo3的pom文件中加入: <dependency><groupId>com.example</groupId>...

继续访问

Springcloud-实现跨项目相互调用(简易版)

Spring Cloud Alibaba provides a one-stop solution for application development for the distributed solutions of Alibaba middleware. - 版本说明 · alibaba/spring-cloud-alibaba Wiki。本次将使用订单服务微服务调用用户以及商品的微服务,我们先启动用户以及商品的微服务 最后使用订单微服务调用。-- SpringBoot 依赖配置 -->

继续访问

SpringCloud笔记一: 跨模块调用,服务注册发现(Eureka、Nacos)

Day1:跨模块调用,服务注册发现(Eureka)

继续访问

热门推荐 SpringBoot实现一个项目多模块,多主启动模块,每个模块多环境配置文件

我们在日常开发过程中,在新建一个项目中,我们经常会将一个项目按照功能性、模块等将一个项目分成多个子项目,这些子项目都包含在主项目中。 对于Spring、SpringBoot中实现多模块化,网上有很多教程,这里就不在讲述了。 本次主要讲的是如何在一个项目中能够有两个Application,即有两个启动类,启动不同的启动类,能够访问不同的功能,另外我们开发项目时,需要将配置分为开发环境、测试环境、生产...

继续访问

springboot自定义工具类中,如何调用service层方法

springboot自定义工具类中,如果想调用service层方法,是不能使用传统方式实现的,比如@Autowired HolidayService holidayService或者new HolidayServiceImpl(),需要特殊的配置才能实现调用,否则报null指针异常。

继续访问

【springboot】微服务,实现模块之间的调用

springboot就是spring,是快速配置spring的脚手架,springcloud是很多框架的集合,要使用里面的框架依赖于springboot。@FeignClient(“service-vod”) 指定模块其中service-vod为模块名称,但不能有_/vodService/vod/video/deleteByVoId/{videoId} 路径不能错。地址:http://localhost:8848/nacos。将模块在注册中心中注册,实现微服务模块之间的互相调用。

继续访问

绝了!这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!

Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具,使得使用者无需开发任何代码就配置一个满足需求的接口。整个接口配置、测试、冒烟、发布,一站式都通过 Dataway 提供的 UI 界面完成。UI 会以 Jar 包方式提供并集成到应用中并和应用共享同一个 http 端口,应用无需单独为 Dataway 开辟新的管理端口。 这种内嵌集成方式模式的优点是,可以使得大部分老项目都可以在无侵入的情况下直接应用 Dataway。进而改进老项目的迭代效率,大大减少企

继续访问

SpringBoot - 跨模块调用自定义注解失败

SpringBoot - 跨模块调用自定义注解失败

继续访问

Spring Boot 多模块开发, 子模块的bean调用问题及解决方法

Spring Boot 多模块工程 1、新建一个maven工程 工程名 :spring-boot-sample-project 删除多余的文件,只留spring-boot-sample-project工程中的pom.xml文件 2、在spring-boot-sample-project工程中增加子模块 新增:spring-boot-sample-api 模块,注


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11408982.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存