Spring Boot
文章平均质量分 57
SpringBoot
唯空城
自检
展开
-
SpringBoot动态切换数据源
这里需要注意如果SpringBoot版本是2.0之后的版本,需要把【url】和【driverClassName】写成【jdbc-url】和【driver-class-name】,否则会报错【jdbcUrl is required with driverClassName.】自定义数据源枚举类,这里配置了两个数据源,则创建两个枚举。3、注入数据源生成bean。单一数据源与Mybatis整合时将DataSource数据源作为参数构建【SqlSessionFactory】,而多个数据源的话只需要将作为原创 2022-08-24 10:10:55 · 4464 阅读 · 0 评论 -
SpringBoot读取@RequestBody参数
之前在开发中遇到了切面中获取@RequestBody参数问题,查阅网上资料后写了下面这篇文章SpringBoot AOP获取@RequestBody参数。但是在实际环境下如果在别的地方调用比如HandlerInterceptor拦截器中调用获取接口参数的方法会报错。下面对方法进行优化,因为@RequestBody 是流的形式进行读取,流读了一次就没有了,所以可以写一个过滤器,在过滤器里面 把流数据 copy一份出来用,别的地方调用的时候使用我们复写的流数据就行。@Bean}}原创 2022-11-15 11:25:56 · 4428 阅读 · 0 评论 -
SpringBoot AOP获取@RequestBody参数
项目中使用Spring Boot AOP做日志记录。当接口使用@RequestParam接收参数时,可以通过request.getParameterMap()来获得全部Parameter参数; 而当接口使用@RequestBody接收参数时,用同样的方法获取参数会出现流已关闭的异常,这是因为Spring已经对@RequestBody提前进行处理,而HttpServletReqeust获取输入流时仅允许读取一次,所以会报java.io.IOException: Stream closed。原创 2022-08-13 18:34:10 · 8598 阅读 · 0 评论 -
【Spring Boot】从配置文件中读取配置参数
现有配置文件application.properties,内容如下所示下面实现从配置文件中读取配置参数 一般情况下直接使用@Value注解即可获取到参数,然后就可以在方法中使用该参数,比如在控制层中使用,使用方法如下2、静态参数当工具类中的方法需要从配置文件读取参数时,需要将参数定义为静态,才可以在静态方法中获取到,这时候就不能只配置个@Value注解就行了,实现方法如下:将@Value注解在set方法上,并且类上要加@Component注解。目前该注解只支持properties文件引原创 2022-06-23 18:14:59 · 6533 阅读 · 0 评论 -
SpringBoot使用TrueLicense实现证书License的授权和验证
前言TrueLicense是一个开源的证书管理引擎,License即版权许可证;使用场景:当项目交付给客户之后用签名来保证客户不能随意使用项目 默认校验了开始结束时间,可扩展增加mac地址校验等。实现思路1、首先需要生成密钥对,常用的方法为JDK自带的KeyTool工具生成;2、创建licenseServer项目,使用TrueLicense和私钥生成License许可文件,注意服务端代码和私钥需要我们自己留存;3、使用公钥和License许可文件为客户端代码添加License原创 2022-05-11 15:11:22 · 4882 阅读 · 5 评论 -
【SpringBoot+shiro】数据格式的校验
前言Spring Boot整合shiro时,在前端传输数据给后端的时候,后端一般要进行数据格式的校验和数据业务的校验;数据格式的校验:比如手机号11位,如果传输的是12位,而数据库中设置的字段是11位,从而导致无法插入到数据库,报SQL相关的异常,这时候就需要对格式进行校验;数据业务的校验:比如查询手机号是否重复我们知道在前端可以进行数据格式的校验,比如【el-form】组件提供了表单验证的功能,只需要通过【rules】属性传入约定的验证规则等实现数据格式的校验,但那是前端做的,在后端中一原创 2022-04-06 18:00:51 · 1807 阅读 · 1 评论 -
Validation自动化校验请求参数
前言 请求参数校验是开发过程中经常需要做的事,为了避免用大量的if判断,这里推荐使用javax.validation中的注解去校验参数,配合springboot 全局异常-ExceptionHandler来处理校验参数时抛出的异常并封装成视图返回源码控制层请求@RequestMapping(value = "/edit", method = RequestMethod.POST)public Result<ExamPaperEditRequestVM> edit...原创 2021-09-16 16:30:28 · 319 阅读 · 0 评论 -
Jackson详解及其常用注解
常用注解1、@JsonIgnore@JsonIgnore此注解用于属性或者方法上(最好是属性上),用来完全忽略被注解的字段和方法对应的属性,即便这个字段或方法可以被自动检测到或者还有其他的注解,一般标记在属性或者方法上,返回的json数据即不包含该属性。因此:getAuthorities()所返回的内容不会出现在返回结果中。案例:使密码不显示在实体对象中的password属性上加@JsonIgnore,前端将接收不到密码import com.fasterxml.jackson.an原创 2021-10-09 10:49:33 · 1246 阅读 · 0 评论 -
Java实现数据库新增修改防止编码重复功能
案例项目中添加菜单实现防止菜单编码重复功能实现数据库表创建索引可添加多个字段Java层逻辑代码@ApiOperation(value = "添加菜单")@RequestMapping(value = "/insertMenu", method = RequestMethod.POST)public Result insertMenu(@RequestBody Menu menu) { Result result = new Result(); t..原创 2021-12-20 15:37:20 · 1723 阅读 · 0 评论 -
SpringBoot启动后执行sql脚本初始化数据库
实现ApplicationRunner接口可以实现SpringBoot启动成功后执行一段代码的操作其中@Order注解用来控制配置类的加载顺序,数字越小越先加载package com.bw.note.config.runner;import org.apache.ibatis.io.Resources;import org.apache.ibatis.jdbc.ScriptRunner;import org.slf4j.Logger;import org.slf4j.LoggerFac.原创 2021-07-15 17:45:27 · 969 阅读 · 0 评论 -
【验证码】登录界面生成随机验证图片
在登录界面生成验证码用于校验登录,如下图所示生成验证码生成验证码的类,用的是@WebServlet注解的servlet.生成的验证码会先放到session中,然后再传到前端显示,用于登录的时候验证。package com.sed.zuul.base.servlet;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet.原创 2022-02-16 16:29:03 · 1332 阅读 · 0 评论 -
@Autowired与@Resource的区别
@Autowired是spring的注解,@Resource是j2ee的注解,他们的作用都是用于注入1、通用场景首先创建一个service类public interface TestService { void injectionTest(String type);}@Servicepublic class TestServiceImpl implements TestService { @Override public void injectionT.原创 2021-10-12 15:27:00 · 471 阅读 · 0 评论 -
@RequestParam和@RequestBody和@PathVariable用法小结
@RequestParam使用@RequestParam接收前段参数比较方便,前端传参的URL:url = “${ctx}/main/mm/am/edit?Id=${Id}&name=${name}”后端使用集合来接受参数,灵活性较好,如果url中没有对参数赋key值,后端在接收时,会根据参数值的类型附,赋一个初始key(String、long ……)@RequestMapping("/edit") public String edit(Model model, @Re转载 2021-10-09 11:22:47 · 662 阅读 · 0 评论 -
Spring Boot 静态方法调用service
静态方法调用serviceimport javax.annotation.PostConstruct;public class RecallController { @Autowired private RecallService recallService; private static RecallController staticInstance = new RecallController(); //通过注解实现注入 @PostConstruct原创 2021-05-06 12:05:00 · 996 阅读 · 0 评论