
SpringBoot
文章平均质量分 84
SpringBoot系列学习研究
程序员三时
speak less do more
展开
-
simplest-jpa v1.2.0如何优雅实现多租户
simplest详细文档TenantFactory 是用于生产租户 ID 的,或者说是用于获取当前租户 ID 的。原创 2023-08-04 17:46:53 · 580 阅读 · 0 评论 -
rest-apiV2.0.0升级为simplest-api开源框架生态之simplest-jpa发布
什么是 simplestsimplest 追求存粹简单和极致。旨在为项目快速开发提供一系列的基础能力,方便用户根据项目需求快速进行功能拓展不在去关心一些繁琐。重复工作,而是把重点聚焦到业务。前言程序 10 年。作为一个多年程序。深知每个项目和程序,都有很多重复性工作要做。入行近 10 年,我写过很多程序,也写死过很多程序。。。。。见证互联网黄金时代,到如今的萎靡。幸运是我还在程序员大军中。和你们一起奋斗!我的故事 <<程序员三时>> 公众号 期待与你交流。希望给迷茫你原创 2023-08-03 11:05:38 · 380 阅读 · 0 评论 -
JPA快速开发之查询接口Repository
SpringData是Spring提供的一个数据操作框架,而SpringData JPA则是该框架下基于JPA标准进行数据操作的模块。SpringData JPA简化了持久层代码的操作,只需编写接口即可实现。JPA,全称Java Persistence API,是Spring Data的子项目之一。它是JDK 5.0的注解或XML描述对象与关系表映射关系的工具,可以将运行时的实体对象持久化到数据库中。JPA和Mybatis都是持久层框架,具有相同的功能。原创 2023-07-26 09:16:57 · 1773 阅读 · 0 评论 -
我开源了团队内部基于SpringBoot Web快速开发的API脚手架v1.7.0更新
rest-api-spring-boot-starter 适用于SpringBoot Web API 快速构建让开发人员快速构建统一规范的业务RestFull API 不在去关心一些繁琐。重复工作,而是把重点聚焦到业务。原创 2023-07-25 09:11:53 · 800 阅读 · 0 评论 -
我开源了团队内部基于SpringBoot Web快速开发的API脚手架v1.6.0更新
rest-api-spring-boot-starter 适用于SpringBoot Web API 快速构建让开发人员快速构建统一规范的业务RestFull API 不在去关心一些繁琐。重复工作,而是把重点聚焦到业务。原创 2023-07-20 17:39:54 · 201 阅读 · 0 评论 -
一键搞定发布自己Jar到Maven中央仓库
以后发布项目,如果groupId不变的话,我们就不需要再去申请工单了。直接重复上述的二、三、四步中的部分关键步骤即可。上述已经配置了servers,就不用再次配置了,即第二步配置settings.xml可以省略了。秘钥也已经生成过了,也不需要再次生成了, 即第三步的秘钥生成也不需要了。不过如果更换了电脑,那就要重新配置settings.xml并重新生成并上传秘钥了。关注公众号,程序员三时持续输出优质内容 希望给你带来一点启发和帮助。原创 2023-07-09 10:21:29 · 616 阅读 · 0 评论 -
手把手教你自定义自己SpringBoot Starter组件源码剖析
剖析了SpringBoot 官方的starter 我们自定义自己的starter,(我们仿照着写)这里我以自己封装总结我工作以来总结项目封装的一个SpringBoot starter为例就是我自己封装的start。已经发布中央仓库。目前更新版本1.3.0 功能如下支持一键配置自定义RestFull API 统一格式返回支持RestFull API 错误国际化支持全局异常处理,全局参数验证处理业务错误断言工具封装,遵循错误优先返回原则redis工作封装。支持所有key操作工具。原创 2023-07-07 09:27:50 · 162 阅读 · 0 评论 -
SpringBoot定义优雅全局统一Restful API 响应框架完结撒花篇封装starter组件
如果我内置错误无法满足你业务需求,你也可以自定义自己错误码你自定义错误枚举 只需要实现ResultCode接口即可/*** @author 公众号 程序员三时* 响应码接口,自定义响应码,实现此接口如果要支持国际化还需要实现国际化接口I18NKey参考我内部HttpStatus实现即可/*** @author 公众号 程序员三时/*** 系统内部错误} }原创 2023-07-06 09:04:18 · 200 阅读 · 0 评论 -
SpringBoot定义优雅全局统一Restful API 响应框架六
我们目前版本中业务错误判断逻辑不是很友好,还需要优化,这里我们可以封装自己的业务异常。虽然很简单,但不可否认的是编码体验至少提升了一个档次。接口,支持在消息转换器执行转换之前,对接口的返回结果进行处理,再结合。在业务中我们可以通过这个方式直接抛出枚举异常。但是不符合我们自己的异常抛出业务逻辑,这里我们可以自定义自定的。我们看看这个代码,有什么问题。也写一个自定义断言类,不过断言失败后抛出的异常不是。这些内置异常,而是我们自己定义的异常。如果没有看前面几篇文章请先看前面几篇。正常我们业务异常代码是这样写的。原创 2023-06-13 14:35:39 · 276 阅读 · 0 评论 -
SpringBoot定义优雅全局统一Restful API 响应框架四
好代码是优化出来的,不是写出来的!!如果没看前面文章,可以先看前面几篇 SpringBoot定义优雅全局统一Restful API 响应框架原创 2023-05-10 12:08:17 · 93 阅读 · 0 评论 -
SpringBoot定义优雅全局统一Restful API 响应框架三
根据http stats错误通常可以分为以下几大类200:请求成功400:请求参数错误401:未授权访问403:表示禁止访问资源。404:表示未找到资源。500:表示服务器内部错误。错误码的设计,可以借用http错误码+三位api自定义错误码 一共是6位数字,具体每个模块代表什么可以根据你自己的业务逻辑,定义不同数字,位数对应不同模块对应错误格式如下/*** @author 公众号 程序员三时*/NOT_FOUND(false, 404, "接口不存在"),原创 2023-05-04 17:46:14 · 134 阅读 · 0 评论 -
SpringBoot定义优雅全局统一Restful API 响应框架二
这里解决之前留下来的问题,当程序没有正常返回时候在SpringBoot中,可以使用注解来启用全局异常处理。通过使用@ControllerAdvice注解,可以捕获应用程序中的所有异常,从而实现统一的异常处理。如果要自定义异常处理方法,可以使用注解,并指定要捕获的异常类型。这样就可以对指定的异常进行统一的处理。因此,通过@ControllerAdvice和@ExceptionHandler注解的组合,可以实现全局的异常处理。代码示列。原创 2023-05-03 17:57:19 · 611 阅读 · 0 评论 -
SpringBoot定义优雅全局统一Restful API 响应框架
假如现在有一个Java项目,老板让你做项目组长,定义项目基础框架,系统技术架构选型,你应该如何设计一个规范的统一的Restful API 响应框架呢。原创 2023-05-02 16:58:34 · 628 阅读 · 0 评论 -
SpringBoot整合reids之JSON序列化文件夹操作
前言最近在开发项目,用到了redis作为缓存,来提高系统访问速度和缓解系统压力,提高用户响应和访问速度,这里遇到几个问题做一下总结和整理快速配置SpringBoot整合redis有专门的场景启动器整合起来还是非常方便的 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-dat原创 2021-11-04 09:26:46 · 261 阅读 · 2 评论 -
SpringBoot之SpringSecurity权限注解在方法上进行权限认证多种方式
前言Spring Security支持方法级别的权限控制。在此机制上,我们可以在任意层的任意方法上加入权限注解,加入注解的方法将自动被Spring Security保护起来,仅仅允许特定的用户访问,从而还到权限控制的目的, 当然如果现有的权限注解不满足我们也可以自定义快速开始首先加入security依赖如下<dependency> <groupId>org.springframework.boot</groupId> <artifactI原创 2021-09-28 14:23:23 · 9630 阅读 · 2 评论 -
SpringBoot异步使用@Async原理及线程池配置
前言在实际项目开发中很多业务场景需要使用异步去完成,比如消息通知,日志记录,等非常常用的都可以通过异步去执行,提高效率,那么在Spring框架中应该如何去使用异步呢使用步骤完成异步操作一般有两种,消息队列MQ,和线程池处理ThreadPoolExecutor而在Spring4中提供的对ThreadPoolExecutor封装的线程池ThreadPoolTaskExecutor,直接使用注解启用@Async,这个注解让我们在使用Spring完成异步操作变得非常方便配置线程池类参数配置自定义常量原创 2021-09-14 16:39:32 · 667 阅读 · 0 评论 -
SpringBoot 属性配置文件数据注入配置和yml与properties区别
前言我们知道SpringBoot 通过配置类来解放一堆的xml文件配置,通属性配置文件,来进行,系统全局属性配置,这样极大的简化了我们开发过程,java web 也可以甜甜的从此快速配置Spring Boot默认加载支持 application*.properties、application*.yaml和application*.yml三种拓展名结尾的全局属性配置文件处理它们顺序优先级为: application*.properties>application*.yaml>applic原创 2021-09-08 15:19:29 · 382 阅读 · 1 评论 -
SpringBoot 优雅配置跨域多种方式及Spring Security跨域访问配置的坑
前言最近在做项目的时候,基于前后端分离的权限管理系统,后台使用 Spring Security 作为权限控制管理, 然后在前端接口访问时候涉及到跨域,但我怎么配置跨域也没有生效,这里有一个坑,在使用Spring Security时候单独配置,SpringBoot 跨越还不行,还需要配置Security 跨域才行。什么是跨域跨域是一种浏览器同源安全策略,即浏览器单方面限制脚本的跨域访问在 HTML 中,<a>, <form>, <img>, <script&g原创 2021-08-28 21:46:19 · 9093 阅读 · 1 评论 -
SpringBoot Spring Security 核心组件 认证流程 用户权限信息获取详细讲解
前言Spring Security 是一个安全框架, 可以简单地认为 Spring Security 是放在用户和 Spring 应用之间的一个安全屏障, 每一个 web 请求都先要经过 Spring Security 进行 Authenticate 和 Authoration 验证核心组件SecurityContextHolderSecurityContextHolder它持有的是安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权等等原创 2021-08-24 17:25:48 · 1019 阅读 · 0 评论 -
SpringBoot包扫描之多模块多包名扫描和同类名扫描冲突解决
前言我们在开发springboot项目时候,创建好SpringBoot项目就可以通过启动类直间启动,运行一个web项目,非常方便简单,不像我们之前通过Spring+SpringMvc要运行启动一个web项目还需要要配置各种包扫描和tomcat才能启动我将应用分成了parent+common+component+app这种模式,parent是一个单纯的pom文件,存放项目的一些公共依赖common则是一个没有启动类的SpringBoot项目,存放项目的核心公共代码component各种组件功能服务原创 2021-08-23 09:25:30 · 13043 阅读 · 0 评论 -
轻松上手SpringBoot+SpringSecurity+JWT实RESTfulAPI权限控制实战
前言我们知道在项目开发中,后台开发权限认证是非常重要的,springboot 中常用熟悉的权限认证框架有,shiro,还有就是springboot 全家桶的 security当然他们各有各的好处,但是我比较喜欢springboot自带的权限认证框架<!--springboot 权限认证--> <dependency> <groupId>org.springframework.boot</groupId>原创 2021-08-20 12:15:06 · 989 阅读 · 1 评论 -
SpringBoot 整合缓存Cacheable实战详细使用
前言我知道在接口api项目中,频繁的调用接口获取数据,查询数据库是非常耗费资源的,于是就有了缓存技术,可以把一些不常更新,或者经常使用的数据,缓存起来,然后下次再请求时候,就直接从缓存中获取,不需要再去查询数据,这样可以提供程序性能,增加用户体验,也节省服务资源浪费开销,在springboot帮你我们做好了整合,有对应的场景启动器start,我们之间引入使用就好了,帮我们整合了各种缓存 <dependencies> <dependency>原创 2021-08-18 10:58:37 · 2153 阅读 · 0 评论 -
Maven 基础标签之版本管理和冲突解决
前言我们在做java项目的时候由于jar包太多,我们就需要使用maven做项目管理,管理项目的jar包依赖,包括打包上线maven基础Maven 是一个项目管理工具,主要用于项目构建,依赖管理,项目信息管理每个maven 项目根目录都会有一个 pom.xml文件, 负责项目构建,依赖管理在这个文件里面,你只需要添加相应的jar包坐标配置,maven就会自动帮你下载相应jar包,不需要我们手动去构建添加jar包很方面,尤其在项目很大,需要jar包依赖很多时候,根本离不开maven在maven的代原创 2021-08-12 14:36:57 · 601 阅读 · 0 评论 -
SpringBoot+Maven 多模块项目的构建、运行、打包实战
前言最近在做一个很复杂的会员综合线下线上商城大型项目,单模块项目无法满足多人开发和架构,很多模块都是重复的就想到了把模块提出来,做成公共模块,基于maven的多模块项目,也好分工开发,也便于后期微服务重构使用场景我刚开始创建项目的时候是基于单模块,开发的,我先开发的接口api 项目结构是这样的core模块是公共模块,mallapi 是小程序api,随然单体项目这样的结构也还清晰,但是后面我想到,还有后台web api,又要重新创建一个项目,core模块,数据库连接model模块这些都是通用的,又是原创 2021-08-10 16:37:08 · 553 阅读 · 0 评论 -
SpringBoot @ModelAttribute 用法
前言项目中遇到这么一个使用场景,用户的登录信息给予token保存,在需要有登录信息的地方,每次都要去获取用户Id,但每次在请求方法中去获取用户信息,代码重复,冗余,很low于是想到了用@ModelAttribute 这个属性使用场景不用@ModelAttribute 时候在需要用户信息的请求中每次需要单独获取用户信息 String token = request.getAttribute("token").toString(); User LoginUser = tokenService.d原创 2021-08-09 10:01:08 · 1748 阅读 · 0 评论 -
SpringBoot 默认json解析器详解和字段序列化自定义
前言在我们开发项目API接口的时候,一些没有数据的字段会默认返回NULL,数字类型也会是NULL,这个时候前端希望字符串能够统一返回空字符,数字默认返回0,那我们就需要自定义json序列化处理SpringBoot默认的json解析方案我们知道在springboot中有默认的json解析器,Spring Boot 中默认使用的 Json 解析技术框架是 jackson。我们点开 pom.xml 中的 spring-boot-starter-web 依赖,可以看到一个 spring-boot-starte原创 2021-08-04 20:11:44 · 6489 阅读 · 1 评论 -
SpringBoot AOP中JoinPoint的用法和通知切点表达式
前言上一篇文章讲解了springboot aop 初步完整的使用和整合 这一篇讲解他的接口方法和类JoinPoint和ProceedingJoinPoint对象JoinPoint对象封装了SpringAop中切面方法的信息,在切面方法中添加JoinPoint参数,就可以获取到封装了该方法信息的JoinPoint对象.ProceedingJoinPoint对象是JoinPoint的子接口,该对象只用在@Around的切面方法中方法名功能Signature getSig原创 2021-08-03 10:47:09 · 9162 阅读 · 1 评论 -
SpringBoot Aop 详解和多种使用场景
前言aop面向切面编程,是编程中一个很重要的思想本篇文章主要介绍的是SpringBoot切面Aop的使用和案例什么是aopAOP(Aspect OrientedProgramming):面向切面编程,面向切面编程(也叫面向方面编程),是目前软件开发中的一个热点,也是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。使用场景利用AOP可以对我们边缘业务进行隔离,降低无关业务逻辑耦合性原创 2021-08-02 09:50:57 · 2604 阅读 · 2 评论 -
SpringBoot 优雅整合Swagger Api 自动生成文档
前言一个好的可持续交付的项目,项目说明,和接口文档是必不可少的,swagger api 就可以帮我们很容易自动生成api 文档,不需要单独额外的去写,无侵入式,方便快捷大大减少前后端的沟通方便查找和测试接口提高团队的开发效率方便新人了解项目,剩余的时间就可以去约妹子啦整合swagger api这里我们自己去整合swagger api比较麻烦,要导入好几个包,有大神帮我们写好了轮子kinfe4j直接对应SpringBoot的启动项,而且在不影响原来使用功能上界面ui做了美化功能做了增强 我们直接整合这原创 2021-07-08 09:37:20 · 380 阅读 · 2 评论 -
SpringBoot Validation参数校验 详解自定义注解规则和分组校验
前言Hibernate Validator 是 Bean Validation 的参考实现 。Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint在日常开发中,Hibernate Validator经常用来验证bean的字段,基于注解,方便快捷高效。在SpringBoot中可以使用@Validated,注解Hibernate Validator加强版,也可以使用@Valid原来Bean Validat原创 2021-07-07 09:30:37 · 7139 阅读 · 4 评论 -
SpringBoot Validation优雅的全局参数校验
前言我们都知道在平时写controller时候,都需要对请求参数进行后端校验,一般我们可能会这样写public String add(UserVO userVO) { if(userVO.getAge() == null){ return "年龄不能为空"; } if(userVO.getAge() > 120){ return "年龄不能超过120"; } if(userVO.getName().isEmpty()){原创 2021-07-06 09:34:34 · 320 阅读 · 0 评论 -
SpringBoot优雅的全局异常处理
前言在日常项目开发中,异常是常见的,但是如何更高效的处理好异常信息,让我们能快速定位到BUG,是很重要的,不仅能够提高我们的开发效率,还能让你代码看上去更舒服,SpringBoot的项目已经有一定的异常处理了,但是对于我们开发者而言可能就不太合适了,因此我们需要对这些异常进行统一的捕获并处理。SpringBoot默认的错误处理机制返回错误页面默认返回 Whitelabel Error Page页面的样式太单调,用户体验不好。如 果 我 们 需 要 将 所 有 的 异 常 同 一 跳 转 到 自原创 2021-07-04 11:10:23 · 475 阅读 · 0 评论 -
Spring Boot 无侵入式 实现RESTful API接口统一JSON格式返回
前言现在我们做项目基本上中大型项目都是选择前后端分离,前后端分离已经成了一个趋势了,所以总这样·我们就要和前端约定统一的api 接口返回json 格式,这样我们需要封装一个统一通用全局 模版api返回格式,下次再写项目时候直接拿来用就可以了约定JSON格式一般我们和前端约定json格式是这样的{ "code": 200, "message": "成功", "data": { }}code: 返回状态码message: 返回信息的描述data: 返回值原创 2021-07-05 09:32:53 · 808 阅读 · 3 评论 -
SpringBoot2.4.x+MybatisPlus+thymeleaf开发博客系列之准备工作
一直游走在各大线上写作平台,csdn,博客园,简书,思否,等也在这些博客平台发表写过一些博客,但是一直没有坚持下来,不知道是自己本身懒惰成性还是平台不好用,明明工作之余或者不忙的时候自己是有大量时间去学习,去沉淀的,但是都浪费了,但是我突然觉的我现在不应该这么浪费时间了,可能是年纪大了,有了职业危机毕竟我都25岁了,我想沉淀一下充实一下自己,从现在开始我会不定时在平台每周检查更新1-2篇比较有质量文章,记录学习工作中遇到的问题,先从自己的个人博客开始写吧。我觉得作为一个开发者,拥有一个完全自主功能强大的.原创 2021-06-29 15:15:24 · 132 阅读 · 0 评论 -
SpringBoot2.4.x整合Mybatis-Plus3.4.x(详细教程)
Mybatis和MybatisPlus的区别与联系Mybatis-Plus是一个Mybatis的增强工具,只是在Mybatis的基础上做了增强却不做改变,MyBatis-Plus支持所有Mybatis原生的特性,所以引入Mybatis-Plus不会对现有的Mybatis构架产生任何影。Mybatis-Plus又简称(MP)是为简化开发,提高开发效率而生正如官网所说的,点击这里进入学官网学习快速与SpringBoot整合基础入门导入必须依赖MybatisPlus整合SpringBoot的场景启动原创 2021-06-28 14:50:36 · 1610 阅读 · 0 评论 -
SpringBoot启动后自动打开浏览器访问项目
之前我们用SSM或者SSH进行JAVA WEB开发的时候,IDEA 需要配置Tomcat然后把项目放到tomcat运行,tomcat启动的时候会自动打开浏览器去访问项目,但是SpringBoot是内嵌tomcat的,项目启动成功后无法自主访问,需要我们手动打开浏览器输入url访问,我觉得这样很不习惯所以研究了一下具体实现方案我想做成一个通用的启动,所以可以随手配置是否需要启动是打开浏览器M...原创 2020-01-17 16:57:03 · 3568 阅读 · 2 评论 -
spring boot 配置logback日志之jdbcTemplate打印sql语句配置
配置jdbcTemplate打印sql用mybaties打印语句很好配置,后来用了JdbcTemplate就不知道怎么打印了,其实JdbcTemplate执行sql语句的过程会做打印sql语句的操作,只不过我们的日志级别没有设置为debug,将自己的日志级别设置为debug就可以了,看源码就可以知道然后修改yml配置文件配置logging对应包的日志级别logging: level:...原创 2020-01-15 09:55:45 · 5170 阅读 · 2 评论 -
springBoot日志快速上手简单配置
默认配置日志级别从低到高分为:TRACE < DEBUG < INFO < WARN < ERROR < FATAL。如果设置为 INFO ,则低于 INFO 的信息都不会输出其他的依次类推默认情况下,Spring Boot会用Logback来记录内部日志,并用INFO级别输出到控制台你不用做任何设置从上图可以看到,日志输出内容元素具体如下:时间...原创 2020-01-14 12:52:41 · 522 阅读 · 0 评论 -
springboot使用websocket
我们都知道 http 协议只能浏览器单方面向服务器发起请求获得响应,服务器不能主动向浏览器推送消息。想要实现浏览器的主动推送有下面几种种主流实现方式:轮询是客户端和服务器之间会一直进行连接,每隔一段时间就询问一次。其缺点也很明显:连接数会很多,一个接受,一个发送。而且每次发送请求都会有Http的Header,会很耗流量,也会消耗CPU的利用率。优点:实现简单,无需做过多的更改缺点:轮询...原创 2020-01-14 09:56:26 · 542 阅读 · 0 评论