解决访问swaggerUI接口文档显示basic-error-controler问题

问题描述 使用swagger生成接口文档后,访问http://localhost:8888/swagger-ui.html#/,显示如下: 有些强迫症的我,感觉看起来很不舒服,结果百度了好久,找到解决方案,刚接触spring boot对于很多api还不是很熟悉,先mark再说 代码如下:

    重启服务:再次访问如下   from:https://www.cnblogs.com/longronglang/p/9045559.html

龙生   19 Oct 2020
View Details

Spring Boot:整合Swagger文档

综合概述 spring-boot作为当前最为流行的Java web开发脚手架,越来越多的开发者选择用其来构建企业级的RESTFul API接口。这些接口不但会服务于传统的web端(b/s),也会服务于移动端。在实际开发过程中,这些接口还要提供给开发测试进行相关的白盒测试,那么势必存在如何在多人协作中共享和及时更新API开发接口文档的问题。 假如你已经对传统的wiki文档共享方式所带来的弊端深恶痛绝,那么尝试一下Swagger2 方式,一定会让你有不一样的开发体验。 使用 Swagger 集成文档具有以下几个优势: 功能丰富 :支持多种注解,自动生成接口文档界面,支持在界面测试API接口功能; 及时更新 :开发过程中花一点写注释的时间,就可以及时的更新API文档,省心省力; 整合简单 :通过添加pom依赖和简单配置,内嵌于应用中就可同时发布API接口文档界面,不需要部署独立服务。 实现案例 接下来,我们就通过Spring Boot 来整合Swagger实现在线API文档的功能。 生成项目模板 为方便我们初始化项目,Spring Boot给我们提供一个项目模板生成网站。 1.  打开浏览器,访问:https://start.spring.io/ 2.  根据页面提示,选择构建工具,开发语言,项目信息等。 3.  点击 Generate the project,生成项目模板,生成之后会将压缩包下载到本地。 4.  使用IDE导入项目,我这里使用Eclipse,通过导入Maven项目的方式导入。   添加相关依赖 添加 Maven 相关依赖,这里需要添加上WEB和SWAGGER依赖。 WEB依赖

swagger依赖,这里选择 2.9.2 版本。

 添加配置类 添加一个swagger 配置类,在工程下新建 config 包并添加一个 SwaggerConfig 配置类。 SwaggerConfig.java

 添加控制器 添加一个控制器,在工程下新建 controller包并添加一个 HelloController控制器。 HelloController.java

编译运行测试 1.  右键项目 -> Run as -> Maven install,开始执行Maven构建,第一次会下载Maven依赖,可能需要点时间,如果出现如下信息,就说明项目编译打包成功了。 2.  右键文件 DemoApplication.java -> Run as -> Java Application,开始启动应用,当出现如下信息的时候,就说明应用启动成功了,默认启动端口是8080。 3.  打开浏览器,访问:http://localhost:8080/swagger-ui.html,进入swagger接口文档界面。 4.  展开hello-controller的hello接口,输入参数并点击执行,就可以看到接口测试结果了。   常用注解说明 swagger 通过注解接口生成文档,包括接口名,请求方法,参数,返回信息等。 @Api: 修饰整个类,用于controller类上 @ApiOperation: 描述一个接口,用户controller方法上 @ApiParam: 单个参数描述 @ApiModel: […]

龙生   19 Oct 2020
View Details

Spring Boot:整合Spring Security

综合概述 Spring Security 是 Spring 社区的一个顶级项目,也是 Spring Boot 官方推荐使用的安全框架。除了常规的认证(Authentication)和授权(Authorization)之外,Spring Security还提供了诸如ACLs,LDAP,JAAS,CAS等高级特性以满足复杂场景下的安全需求。另外,就目前而言,Spring Security和Shiro也是当前广大应用使用比较广泛的两个安全框架。 Spring Security 应用级别的安全主要包含两个主要部分,即登录认证(Authentication)和访问授权(Authorization),首先用户登录的时候传入登录信息,登录验证器完成登录认证并将登录认证好的信息存储到请求上下文,然后再进行其他操作,如在进行接口访问、方法调用时,权限认证器从上下文中获取登录认证信息,然后根据认证信息获取权限信息,通过权限信息和特定的授权策略决定是否授权。 本教程将首先给出一个完整的案例实现,然后再分别对登录认证和访问授权的执行流程进行剖析,希望大家可以通过实现案例和流程分析,充分理解Spring Security的登录认证和访问授权的执行原理,并且能够在理解原理的基础上熟练自主的使用Spring Security实现相关的需求。 实现案例 接下来,我们就通过一个具体的案例,来讲解如何进行Spring Security的整合,然后借助Spring Security实现登录认证和访问控制。 生成项目模板 为方便我们初始化项目,Spring Boot给我们提供一个项目模板生成网站。 1.  打开浏览器,访问:https://start.spring.io/ 2.  根据页面提示,选择构建工具,开发语言,项目信息等。 3.  点击 Generate the project,生成项目模板,生成之后会将压缩包下载到本地。 4.  使用IDE导入项目,我这里使用Eclipse,通过导入Maven项目的方式导入。 添加相关依赖 清理掉不需要的测试类及测试依赖,添加 Maven 相关依赖,这里需要添加上web、swagger、spring security、jwt和fastjson的依赖,Swagge和fastjson的添加是为了方便接口测试。 pom.xml

添加相关配置 1.添加swagger 配置 添加一个swagger 配置类,在工程下新建 config 包并添加一个 SwaggerConfig 配置类,除了常规配置外,加了一个令牌属性,可以在接口调用的时候传递令牌。 SwaggerConfig.java

加了令牌属性后的 Swagger 接口调用界面,会多出一个令牌参数,在发起请求的时候一起发送令牌。 2.添加跨域 配置 添加一个CORS跨域配置类,在工程下新建 config 包并添加一个 CorsConfig配置类。 CorsConfig.java

安全配置类 下面这个配置类是Spring Security的关键配置。 在这个配置类中,我们主要做了以下几个配置: 1. 访问路径URL的授权策略,如登录、Swagger访问免登录认证等 2. 指定了登录认证流程过滤器 JwtLoginFilter,由它来触发登录认证 3. 指定了自定义身份认证组件 JwtAuthenticationProvider,并注入 UserDetailsService 4. 指定了访问控制过滤器 JwtAuthenticationFilter,在授权时解析令牌和设置登录状态 5. 指定了退出登录处理器,因为是前后端分离,防止内置的登录处理器在后台进行跳转 WebSecurityConfig.java

登录认证触发过滤器 JwtLoginFilter 是在通过访问 /login 的POST请求是被首先被触发的过滤器,默认实现是 UsernamePasswordAuthenticationFilter,它继承了 AbstractAuthenticationProcessingFilter,抽象父类的 doFilter 定义了登录认证的大致操作流程,这里我们的 JwtLoginFilter 继承了 UsernamePasswordAuthenticationFilter,并进行了两个主要内容的定制。 1. […]

龙生   16 Oct 2020
View Details

springboot捕获全局异常和配置多数据源

捕获全局异常是在项目运行期间如果调用的某一个方法出现了运行时异常,则会捕获,并且给出回馈。 首先需要建一个包,包里新建一个捕获异常类GlobalExceptionHandler。前提是springboot的启动类的扫描注解ComponentScan()要扫描到。

  这个捕获异常类可以捕获到全局的运行时异常,例如商城购物车的控制层一个方法出现异常,黄色背景的是重点,会发生异常。

  然后启动项目,进入主页,当点击购物车按钮时也就是调用了getShoppingCar这个方法,发生了异常,运行结果是跳转页面失败,直接给出异常信息,也就是全局捕获异常类中设置的信息。 配置多数据源# 以前是在applicationContext.xml中配置的,现在springboot通过注解来配置数据源。 首先在application.properties配置文件中加入多数据源配置。

  在例子开始之前,首先去创建两个用于测试的数据库test1和test2,并且新建两张空表。 写两个数据源的配置类。# 在java文件夹下新建dataSource包,新建数据源配置类DataSource01和DataSource02。

 

  在java文件夹下分别创建两个文件夹test1和test2,分别对这两个数据库进行操作,启动类都需要先扫描到test1和test2的包

  Test1的userMapper

  Test1的UserServiceImpl

  Test2的CustomerMapper

  Test2的CustomerServiceImpl

  最后写一个controller类,调用这两个service

  启动项目,看数据库表内容,两张表都插入了信息。   from:https://www.cnblogs.com/fantongxue/p/12443377.html

龙生   15 Oct 2020
View Details

MySQL 错误1418 的原因分析及解决方法

具体错误: 使用mysql创建、调用存储过程,函数以及触发器的时候会有错误符号为1418错误。 [Err] 1418 – This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) 查阅相关资料,意思是说binlog启用时,创建的函数没有声明类型,因为binlog在主从复制需要知道这个函数创建语句是什么类型,否则同步数据会有不一致现象。 mysql开启了bin-log, 我们就必须指定我们的函数是否是哪种类型: 1 DETERMINISTIC 不确定的 2 NO SQL 没有SQl语句,当然也不会修改数据 3 READS SQL DATA 只是读取数据,当然也不会修改数据 4 MODIFIES SQL DATA 要修改数据 5 CONTAINS SQL 包含了SQL语句 为了解决这个问题,MySQL强制要求: 在主服务器上,除非子程序被声明为确定性的或者不更改数据,否则创建或者替换子程序将被拒绝。这意味着当创建一个子程序的时候,必须要么声明它是确定性的,要么它不改变数据。 声明方式有两种: 第一种:声明是否是确定性的 DETERMINISTIC和NOT DETERMINISTIC指出一个子程序是否对给定的输入总是产生同样的结果。 如果没有给定任一特征,默认是NOT DETERMINISTIC,所以必须明确指定DETERMINISTIC来声明一个子程序是确定性的。 这里要说明的是:使用NOW() 函数(或它的同义)或者RAND() 函数不会使一个子程序变成非确定性的。对NOW()而言,二进制日志包括时间戳并会被正确的执行。RAND()只要在一个子程序内被调用一次也可以被正确的复制。所以,可以认为时间戳和随机数种子是子程序的确定性输入,它们在主服务器和从服务器上是一样的。 第二种:声明是否会改变数据 CONTAINS SQL, NO SQL, READS SQL DATA, MODIFIES SQL用来指出子程序是读还是写数据的。 无论NO SQL还是READS SQL DATA都指出,子程序没有改变数据,但是必须明确地指定其中一个,因为如果任何指定,默认的指定是CONTAINS SQL。 默认情况下,如果允许CREATE PROCEDURE 或CREATE […]

龙生   15 Oct 2020
View Details

SpringBoot 返回Json实体类属性大小写问题

总归上述问题Rt,其实今天开发刚遇到,当时找了半天为啥前台传参后台却接收不到,原来是返回的时候返回小写,但是前台依旧大写传参。 查了很多后发现其实是json返回的时候把首字母变小写了,也就是Spring Boot中Jackson的功劳 百度后得@JsonProperty注解完美解决。但与此同时会出现两个问题 如果注解放到属性上,则返回的时候既有大写也有小写,

  Result:{Ao:xxx,ao:xxx} 所以注解放在getter上完美解决,返回只有大写不再自动变为小写的问题。

  Result:{Ao:xxx} from:https://blog.csdn.net/github_36887863/article/details/81807088

龙生   15 Oct 2020
View Details

vs 2019 显示方法被调用次数

VS 是一个很强大的编译器 以前都是根据方法 名Ctrl+F 搜索 很不方便 但VS已经有方便的提示功能了 设置方法 工具>>文本文本编译器>>所有语言>>CodeLens >> 选择启用Code了Lens   from:https://blog.csdn.net/q465162770/article/details/104039869

龙生   14 Oct 2020
View Details

解决:java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider

控制台报错:  java.lang.NoSuchMethodException:tk.mybatis.mapper.provider.base.BaseSelectProvider.<init>() 浏览器访问:http://localhost:8081/category/list?pid=0  解决办法: 应该导入import tk.mybatis.spring.annotation.MapperScan这个包。 from:https://blog.csdn.net/qq_37495786/article/details/83448614

龙生   12 Oct 2020
View Details

Mybatis通用Mapper(tk.mybatis)的使用

使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQL。而且,当数据库表结构改动时,对应的所有SQL以及实体类都需要更改。这工作量和效率的影响或许就是区别增删改查程序员和真正程序员的屏障。这时,通用Mapper便应运而生……

龙生   12 Oct 2020
View Details

MySql Usage Notes

Unsigned Fields MySql supports both signed, and unsigned, numeric fields. These are not JDBC types, so MyBatis generator cannot automatically account for these types of fields. The Java data types are always signed. This can lead to a loss of precision when using unsigned fields. The solution is to provide a <columnOverride> for any unsigned numeric field in MySql. Here is an example of how to deal with an unsigned bigint field in MySql:

You will have to cast the returned value to the appropriate type yourself (in this […]

龙生   12 Oct 2020
View Details
1 111 112 113 410