![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
springboot
文章平均质量分 96
皆非的万事屋
这个作者很懒,什么都没留下…
展开
-
Mybatis结合Redis缓存以注解开发时的查询优化方案——重新实现@One、@Many注解
前言该问题最早提出是在20年9月份开发新院统战项目时提出的,也就是我刚刚搭完第一版后端框架,其中持久层使用的框架是mybatis plus,缓存使用的是sprinboot缓存注解+redis,其中将缓存注解加在service层。当时在使用mybatis plus并以注解开发时,由于过度使用@One与@Many注解进行属性的封装,例如:@Select("SELECT id,dept_id,username,nick_name,gender,phone,email,avatar_path,passwo原创 2021-01-20 21:07:31 · 582 阅读 · 0 评论 -
Springboot默认日志的通用配置文件logback.xml,并设置日志时区
Springboot中引入spring-boot-starter-web时,默认会引入self4j + logback,所以如果没有其他日志的需求,这两个就可以,他们支持的日志配置文件名可以为logback.xml,放在resources下即可生效:<configuration> <!-- 尽量别用绝对路径,如果带参数不同容器路径解释可能不同 --> <property nam原创 2020-08-11 16:19:41 · 1623 阅读 · 1 评论 -
Springboot通过@ControllerAdvice实现简单的全局统一异常处理
当我们的业务层出现异常,后台报错而没有给前端合理的响应,这种情况是肯定不能出现的,但是我们也不能每个接口都try/catch一遍,自己处理异常。我们可以通过SpringMVC提供的@ControllerAdvice注解来进行简单的全局统一异常处理。//api下包含了controller和service和mapper@ControllerAdvice(basePackages = "com.winner.api")pub原创 2020-08-11 16:05:14 · 287 阅读 · 0 评论 -
Springboot项目中使用过滤器Filter+ThreadLocal实现对请求用户的拦截和保存
由于jwt的出现,使请求方法的参数中不再携带用户的标识,而是将含有用户信息的token放入请求头中,在该请求进入业务之前就要进行层层过滤拦截,这时候就会牵扯出来了一个问题,如何在当前请求的线程中保存该请求用户的信息。1. ThreadLocalThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的。ThreadLocal为变量在每个线程中都创建了一个副本,原创 2020-08-11 15:38:08 · 8386 阅读 · 2 评论 -
Springboot中基于java-jwt的简单基础jwt工具类(生成token与校验)
我们知道 jwt(JSON Web Token)是基于RFC 7519标准的方法,并不是某公司的开源项目,所以jwt在java端有很多的实现库,主流的有jjwt、java-jwt、JOSE4j等,其实基础功能都差不多。本文提供的是基于 java-jwt 的工具类。1. 依赖 <!-- jwt --> <dependency> <group原创 2020-08-11 09:59:22 · 1035 阅读 · 0 评论 -
Springboot项目中通过谷歌的guava实现令牌桶算法,来进行请求限流
ssss原创 2020-08-11 09:28:49 · 911 阅读 · 0 评论 -
【悲观锁】和【乐观锁】来解决秒杀系统中的超卖问题
我们知道在秒杀系统中肯定是会碰到超卖的问题的,原因就是高并发请求导致了数据库的脏读和不可重复读,进而造成了超额用户下了订单。 解决方法可以通过封锁协议在数据库端对操作进行加锁,进而提高事务的隔离级别,来到达可串行化调度(多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同。可串行化调度当然也保持数据库的一致状态原创 2020-08-10 22:57:12 · 2119 阅读 · 0 评论 -
Could not create connection to database server. Attempted reconnect 3 times. Giving up.的几种解决方案
今天通过swagger调用接口的时候,后台就突然报错,查看是数据库方面的——Could not create connection to database server. Attempted reconnect 3 times. Giving up. 一时间也不清楚问题出现在哪,只知道是数据库连不上了,到网上查了不少解决方法,分别是以下几个:原创 2020-08-09 21:11:51 · 9726 阅读 · 0 评论 -
springboot后端发请求——Http工具类
public class HttpClientUtil { public static String doGet(String url, Map<String, String> param) { // 创建Httpclient对象 CloseableHttpClient httpclient = HttpClients.createDefault(); String resultString = ""; Closeab原创 2020-08-09 21:04:42 · 2207 阅读 · 1 评论 -
Springboot 自定义简单的全局统一响应体
一般来说控制层加的都是@RestController来表明任何一个请求都会有一个相应结果,规范的情况下都会定义一个全局的响应体,这里先展示一种简单的,有关响应码直接定义在该响应体类中:public class AjaxResponse { public static final String ERROR_MSG = "操作失败"; public static final String SUCCESS_M原创 2020-08-09 16:16:35 · 908 阅读 · 0 评论 -
Springboot自定义注解实现简单的接口权限控制,替代Shiro/SpringSecurity
我们知道权限控制是不能交给前端去做的,因为一但后端的接口所暴露,是十分危险的一件事,所以前端发起的请求的安全性无从考证,最终的权限控制还是要交给后端去判断。 Shiro和SpringSecurity是都具备权限控制的两个框架,但是如果自己的小项目在权限控制方面要求比较简单,那么这两个框架就显得有些“重”,而且SpringSecurity配置起原创 2020-08-09 14:44:07 · 3549 阅读 · 3 评论 -
DO、BO、DTO之间相互转换工具类
在springboot项目单靠实体类不能够满足前后端传输模型的需求,所以我们又建了DO、BO、DTO等模型来方便数据的传输,但是他们之间往往又会进行转换,下面是一个任意两个模型相互转换的工具类:public class MyBeanUtils { public static String[] getNullPropertyNames(Object source) { final BeanWrappe原创 2020-08-09 10:54:01 · 1256 阅读 · 0 评论 -
springboot中Mybatis Plus 分页 + 注解联表查询 + 自定义wrapper
我们都知道 mybatis plus 是基于mybatis的增强,可以实现单表无需再写CRUD操作,但是对于多表的联合查询,还是需要自己手动写sql,而且使用的也是mybatis中的@One和@Many,如果此时还需要用到分页和自定义wrapper,就再麻烦了一些,下面说下大致的代码: mybatis plus的依赖: <dep原创 2020-08-09 10:40:24 · 2226 阅读 · 0 评论 -
Springboot项目中全部时间、时区设置统一设置,包括Jackson、日志、数据库
经过上一次后端的开发后,一共总结了后端在开发过程中会有三个地方涉及到时间与时区的设置,分别是:存入数据库数据时的时间日志打印的时间Jackson在进行数据格式转换时的时间 这里我们所用的数据库为 Mysql,字段中的时间类型为 datetime,java实体类中所使用的时间类型为 Date。 &原创 2020-08-08 15:56:36 · 7984 阅读 · 1 评论 -
BO中toString()方法输出父级私有属性的两种方式
我们都知道子类是无法集成父类的私有属性的,特别在实体类中属性都是私有的,而经常又要写BO来继承这些实体类,如果使用IDEA直接自动生成toString()方法默认是不输出父类的,必须在改方法里显示调用父级toString():public class UserDepartmentBO extends User { //关联院系实体类 private Department department;原创 2020-08-07 22:18:57 · 1147 阅读 · 0 评论 -
springboot里编写filter过滤器,urlPatterns属性失败的解决方法
springboot里编写filter过滤器常用来,拦截请求,获取其中的token,来获取用户数据,filter过滤器要被springboot加载,由于是相当于一个组件类,可能第一时间想到的就是加@Component,如下:@Component@WebFilter(filterName = "testFilter",urlPatterns = {"/api/*"})public class CommonFilter i原创 2020-07-10 22:07:55 · 5014 阅读 · 1 评论 -
springboot整合高版本druid数据源(1.1.20+),解决监控页打不开的问题
druid是我们springboot项目中经常会使用的数据源之一,良好的性能并且自带监控页面,十分强大。下面总结下依赖和配置方法:<!--druid数据源 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-原创 2020-07-10 21:54:38 · 2899 阅读 · 1 评论 -
@RequestBody的使用场合
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的),一般使用在前后端分离的项目中,前端使用ajax类的post请求时,会在请求体中携带json格式的数据,例如:this.$http.post("http://localhost:8989/vue/user/add",this.user).then(res =>{ console.log(res); }); 原创 2020-06-16 16:47:01 · 2399 阅读 · 0 评论 -
Lombok快速使用,快速编写实体类
首先是导入依赖:<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> </depen原创 2020-06-16 16:30:28 · 534 阅读 · 0 评论 -
springboot有关数据库的依赖与默认配置
首先是pom依赖: <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId>原创 2020-06-16 16:21:28 · 1073 阅读 · 0 评论 -
随机盐生成类——SaltUtils
用户在注册账户时,通常在后端的业务部分会对用户的密码进行加密处理,大多采用 md5 + salt + 散列。盐是一定长度的随机乱码(字母、数字、特殊符号),每次都是随机生成的,所以可以写一个随机盐生成类来完成随机盐的生成。public class SaltUtils { public static String getSalt(int n){ char[] chars = ("ABCDEFGHIJK原创 2020-06-16 16:11:38 · 3869 阅读 · 0 评论 -
java -jar启动的springboot项目如何使用https协议访问
这里以微信小程序为例。我们都知道微信小程序在做请求的时候是只支持https协议的,所以你后端项目不能直接再使用http+公网ip访问了,而是https+域名进行访问。 首先是部署在服务端的tomcat,可以安装SSL证书,你再把项目打包成war,进行部署,就可以通过https进行访问了。 &nb原创 2020-06-11 11:10:13 · 4921 阅读 · 0 评论 -
netty如何“嵌入”到springboot中
为什么说是netty如何“嵌入”到springboot中,因为netty本身需要绑定一个端口,需要新线程去跑,如果你直接把netty的类作为组件加入springboot的话,那么当加载netty时,netty启动后就把springboot给阻塞掉了,http请求都无法处理,特别是使用netty实现websocket的时候,还不支持springMVC,所以netty更应该作为一个独立的maven项目去构建部署。 &原创 2020-06-04 08:51:24 · 651 阅读 · 1 评论