SpringBoot
文章平均质量分 57
SpringBoot 笔记
Maggieq8324
万事从未风过耳,一生只是梦游身
展开
-
SpringBoot - 集成MongoDB实现文件上传
目录前言环境代码实现测试源码前言记录下SpringBoot集成MongoDB实现文件上传的步骤MongoDB - 5.0.6安装包链接:https://pan.baidu.com/s/1lCcPvYYNWncb6lbvrZdeVg 提取码:0tf1环境SpringBoot - 2.5.12MongoDB - 5.0.6代码实现pom.xml<dependency> <groupId>org.springframework.boot原创 2022-04-17 16:01:54 · 2079 阅读 · 1 评论 -
SpringBoot - 动态修改yml配置文件
目录前言具体实现实现代码测试源码前言记录下SpringBoot修改yml配置文件后无需重启服务的方式(打包后生效),效果如下:具体实现实现代码pom.xml<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artif原创 2022-03-28 18:17:01 · 6330 阅读 · 3 评论 -
SpringBoot - AOP 实现登录状态检查
目录前言实现登录状态检查的方式AOP 定义AOP 相关概念Advice 通知类型具体实现实现代码测试源码前言记录下AOP实现登录状态的检查,文章使用的JWT校验参考:SpringBoot - 集成Auth0 JWT实现登录状态检查的方式Servlet过滤器拦截器Spring AOPAOP 定义AOP(Aspect Oriented Programming),面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术,在程序开发中主要用来解决一些系统层面上的问题,在原创 2021-10-14 11:48:37 · 952 阅读 · 0 评论 -
关于 IDEA 中 Mybatis Mapper 自动注入警告的解决方案
目录前言解决方案为 @Autowired 注解设置 required = false用@Resource替换@Autowired在Mapper接口上添加@Repository注解使用Lombok - @RequiredArgsConstructor注解前言@Autowired默认情况下要求依赖对象必须存在,而IDEA对于Mybatis接口的注入是无法理解的,被认为该对象是null,虽然代码能正常运行,但有警告总归膈应解决方案为 @Autowired 注解设置 required = false原创 2021-09-20 21:42:15 · 734 阅读 · 0 评论 -
Spring Boot - 整合Actuator
@[TOC](目录)# 前言```Actuator```是```SpringBoot```中的重要组件,为应用程序提供了强大的监控能力 具体使用 依赖- ```pom.xml`````` org.springframework.boot spring-boot-starter-actuator原创 2021-09-19 22:54:50 · 723 阅读 · 0 评论 -
SpringBoot - 集成 MyBatis 通用代码生成器 mybatis-generator(Eclipse篇)
mybatis 生成代码配置 mybatis-generator:generate 的使用使用详解pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSch...原创 2019-08-21 22:59:39 · 9453 阅读 · 1 评论 -
SpringBoot - 集成 MyBatis 通用代码生成器 mybatis-generator(IDEA篇)
目录前言具体实现代码配置运行前言最近项目中用到了Mybatis的通用代码生成器mybatis-generator,记起之前记录过的一篇文章mybatis 生成代码配置 mybatis-generator:generate 的使用详解,用的是同一套东西,只是对比起之前添了一点东西1、开发工具Eclipse -> Idea2、添加Lombok模块3、模块配置之前的博客名也改为了SpringBoot - 集成 MyBatis 通用代码生成器 mybatis-generator(Eclipse原创 2021-09-19 21:27:57 · 2011 阅读 · 0 评论 -
Mybatis - 实体类与数据结果集的映射方式
目录前言测试用例映射方式resultType使用as指定别名reusultMap对应实体Collection集合映射前言记录下最近项目中用到的Mybatis实体类与数据结果集的映射方式。测试用例查询商品及其子项信息TableCREATE TABLE `product` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,原创 2021-09-08 16:34:29 · 2161 阅读 · 0 评论 -
SpringBoot - 搭建静态资源存储服务器
目录前言环境实现效果具体实现文件上传配置类上传接口上传实现辅助类实体上传测试文件访问配置类项目源码前言记录下SpringBoot下静态资源存储服务器的搭建。环境win10 + SpringBoot2.5.3实现效果文件上传:文件存储位置:文件访问:具体实现文件上传配置类pom.xml<dependency> <groupId>org.springframework.boot</groupId> &l原创 2021-09-08 01:34:44 · 2901 阅读 · 1 评论 -
SpringBoot - 集成MyBatis-Plus代码生成器CodeGenerator
目录前言环境具体实现代码生成器自定义代码模板测试前言AutoGenerator是MyBatis-Plus的代码生成器,通过AutoGenerator可以快速生成Entity、Mapper、Mapper XML、Service、Controller等各个模块的代码,这里介绍下SpringBoot中集成MyBatis-Plus代码生成器CodeGenerator的方式,模板引擎使用Freemarker。环境SpringBoot2.53 + Mybatis-Plus3.3.0具体实现代码生成器原创 2021-09-07 20:21:11 · 4388 阅读 · 1 评论 -
Mybatis-Plus - 条件构造器 QueryWrapper 的使用
目录前言查询示例基础代码QueryWrapper 的基本使用QueryWrapper 的lambada写法LambadaQueryWrapper 的使用LambdaQueryChainWrapper 的链式调用前言记录下Mybatis-Plus中条件构造器Wrapper的一些基本用法。查询示例表结构CREATE TABLE `product` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) C原创 2021-09-07 17:43:40 · 2547 阅读 · 0 评论 -
Mybatis-Plus - 分页查询
目录前言环境具体实现测试前言记录下Mybatis-Plus的分页查询,Mybatis-Plus的整合在上一篇文章:SpringBoot - 整合Mybatis-Plus环境SpringBoot2.53 + Mybatis-Plus3.3.0具体实现配置类import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;import org.springframework.context.annotation原创 2021-09-07 12:51:54 · 1693 阅读 · 0 评论 -
SpringBoot - 整合Mybatis-Plus
目录前言环境具体实现项目结构项目配置实现代码测试前言Mybatis-Plus是Mybatis的增强,Mybatis-Plus在Mybatis的基础上借鉴了很多JPA的做法,记录下SpringBoot下的整合方法。环境SpringBoot2.53 + Mybatis-Plus3.3.0具体实现项目结构项目配置pom.xml<!-- web --><dependency> <groupId>org.springframework.boo原创 2021-09-07 10:52:30 · 1825 阅读 · 0 评论 -
When allowCredentials is true, allowedOrigins cannot contain the special value “*“
目录java.lang.IllegalArgumentException: When allowCredentials is true, allowedOrigins cannot contain the special value "*" since that cannot be set on the "Access-Control-Allow-Origin" response header. To allow credentials to a set of origins, list them exp原创 2021-09-06 22:23:26 · 3286 阅读 · 2 评论 -
SpringBoot - 整合Mybatis
目录前言环境具体实现项目结构项目配置实现代码测试前言Mybatis是一个半自动化ORM(Object Relation Mapping)框架, 之所以说Mybatis半自动化,是因为SQL语句需要用户自定义,SQL的解析,执行等工作由Mybatis执行,这里记录下SpringBoot整合Mybatis的案例。环境SpringBoot2.53 + Mybatis2.2.0具体实现项目结构项目结构如下所示项目配置pom.xml<!-- web --><dep原创 2021-09-06 22:15:15 · 1758 阅读 · 1 评论 -
SpringBoot - 读取JSON文件
目录前言具体实现转换例子前言记录下SpringBoot读取JSON文件的方式具体实现JsonUtil.javaimport java.io.File;import java.io.FileInputStream;import java.io.InputStreamReader;import java.io.Reader;public class JsonUtil { /** * 读取JSON文件转换为字符串 * @param filePath *原创 2021-09-04 17:28:20 · 5082 阅读 · 0 评论 -
SpringBoot - CommandLineRunner接口 - 初始化操作
目录前言CommandLineRunner接口在容器启动成功后最后一步调用,常用于应用程序启动后初始化操作,其在整个应用生命周期内只会执行一次。具体应用 实现CommandLineRunner接口 CommandLineRunner实现类的执行顺序 使用 @Order 注解定义 CommandLineRunner 的执行顺序原创 2021-08-26 12:39:37 · 1731 阅读 · 0 评论 -
SpringBoot - 集成RocketMQ实现延迟消息队列
目录前言RocketMQ是阿里巴巴在2012年开源的分布式消息中间件,记录下SpringBoot整合RocketMQ的方式,RocketMQ的安装可以查看Windows下安装RocketMQ环境SpringBoot2.5.3 + RocketMQ4.7.0 具体实现 pom.xml org.apache.rocketmqrocketmq-client原创 2021-08-26 10:01:09 · 3532 阅读 · 0 评论 -
SpringBoot + Redis 实现键空间通知(keyspace notification)
目录前言环境具体实现前言SpringBoot + Redis 可以用 Redis 的键空间通知机制实现类似延迟消息队列的功能 ,Redis2.8 后可以通过键空间通知接收那些以某种方式改变了Redis数据空间的事件通知,关于 Redis 键空间通知的配置 Redis-x64-3.2 键空间通知(keyspace notification) 之前有介绍,这里只是介绍 SpringBoot 中的同理实现。环境SpringBoot2.5.3 + Redis-x64-3.2.1具体实现启动 red原创 2021-08-25 14:09:00 · 2129 阅读 · 2 评论 -
SpringBoot - 集成 Redis
目录前言环境具体实现前言记录下SpringBoot集成Redis的方式。环境SpringBoot2.5.3 + Redis-x64-3.2.1具体实现pom.xml<!-- redis --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifa原创 2021-08-25 13:27:31 · 1486 阅读 · 0 评论 -
SpringBoot - HandlerInterceptor 中 @Autowired 为空
目录前言解决方法前言拦截器中使用@Autowired时为空,这是因为拦截器加载是在Spring Bean创建之前。public class PermissionInterceptor implements HandlerInterceptor { @Autowired private UserService userService; // null }错误解决方法@Configurationpublic class InterceptorConfigu原创 2021-08-21 14:43:25 · 2106 阅读 · 0 评论 -
JPA - JPQL完成复杂的多表查询
目录前言示例建表语句Entity实体JPQL多表查询完整代码前言JPA中可以通过设置实体的导航属性 + JPQL完成复杂的多表查询,简化SQL的编写。示例建表语句TableCREATE TABLE `school` ( `id` int(11) DEFAULT NULL, `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_原创 2021-08-20 14:49:44 · 2953 阅读 · 0 评论 -
微信小程序 - Code 授权登录
目录 前言 微信小程序AppID和AppSecret一起使用可调用微信公众接口能力,这里介绍通过 wx.login() 拿到code,将code传到后台服务器, 后台服务器结合小程序的 appid 和 appsecret 去请求微信服务器拿到用户的 openid 进行自己的业务逻辑处理。环境 SpringBoot + 小程序 具体实现 小程序 index.wxml原创 2021-08-19 16:40:06 · 3862 阅读 · 0 评论 -
SpringBoot - Interceptor拦截器实战
目录前言Java中的拦截器提供了一种可以使开发者在一个Action执行的前后执行一段代码的机制,这里我们用拦截器来承接上一篇文章 SpringBoot - 集成Auth0 JWT,在拦截器中进行JWT Token验证。具体实现拦截器的实现拦截器import org.apache.commons.lang3.StringUtils;import org.springframework.web.servlet.HandlerInterceptor;import org.springframe原创 2021-08-19 15:27:43 · 1575 阅读 · 0 评论 -
SpringBoot - 集成Auth0 JWT
目录前言说说JWT,先说下互联网服务常见的两种用户认证方式:session认证与Token认证 session认证 传统的Session认证的大体流程可以表示为用户提供用户名和密码登录后由服务器存储一份用户登录信息并传递给浏览器保存为Cookie,并在下次请求中根据Cookie来识别用户,但这种方式缺陷明显: - Session都是保存在内存中,随着认证用户的增多,服务端的开销明显增大 - 保存在内存中的Session限制了分布式的应用 - Cookie容易被截获伪造原创 2021-08-19 14:39:31 · 3858 阅读 · 0 评论 -
SpringBoot - jSR303校验的Message模板配置
目录前言具体实现Message模板配置模板参数配置前言jSR303参数校验可以查看之前的文章 SpringBoot - Bean validation 参数校验,这里介绍消息模板的配置。具体实现Message模板配置/resources/目录下新增ValidationMessages.properties文件(固定文件名),配置Messageid.valid = id必须是正整数全局异常处理器import org.springframework.http.HttpStatus;原创 2021-08-18 19:04:20 · 2799 阅读 · 0 评论 -
JPA - @Where注解 - 添加条件查询
目录前言具体实现前言这里介绍@Where注解给Entity统一添加条件查询。具体实现Product.java@Entity@Getter@Setter@Where(clause = "delete_time is null")public class Product { @Id private int id; private String title; private Date createTime; private Date deleteT原创 2021-08-17 14:48:30 · 4001 阅读 · 0 评论 -
JPA - @Convert属性映射转换器
目录前言具体实现Map与JSON的属性转换器List与JSON属性转换器实体应用效果图前言@Convert属性转换器用于数据库属性类型与java存储的类型做转换,其方便之处在于存储与读取的时候能自动转换,如下业务场景:业务对象存在一个Map或List属性,存入数据库时需保存为json字符串,返回前端时以对象来返回。@Convert属性转换器需实现AttributeConverter<X, Y>接口,第一个泛型类型为Entity字段类型,第二个泛型类型为数据库字段类型。具体实现Map原创 2021-08-17 01:10:45 · 4275 阅读 · 0 评论 -
JPA - 使用Page进行分页
目录前言环境具体实现前言这里介绍JPA中使用Page进行分页及分页的封装,前端传递的参数类型如下形式:?start=10&count=5结果展示如下:环境SpringBoot 2.5.3 + JPA 2.5.3具体实现Product 控制器import com.coisini.springbootlearn.model.Product;import com.coisini.springbootlearn.model.common.PageCounter;import c原创 2021-08-15 23:24:24 · 4319 阅读 · 1 评论 -
SpringBoot - 使用DozerBeanMapper进行深度拷贝
前言Dozer是一个Java Bean的转换组件,它可以将一个对象递归拷贝到另外一个对象,支持简单属性映射,复杂类型映射,双向映射,隐式显式映射以及递归映射。具体应用依赖<!-- dozermapper --><dependency> <groupId>com.github.dozermapper</groupId> <artifactId>dozer-core</artifactId> <原创 2021-08-15 21:29:51 · 2860 阅读 · 0 评论 -
SpringBoot - Thymeleaf 静态资源托管
目录前言具体应用前言Thymeleaf是一个XML/XHTML/HTML5模板引擎,这里介绍如何应用Thymeleaf 做静态资源托管。具体应用依赖<!-- 模板渲染 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId><原创 2021-08-15 16:35:55 · 1538 阅读 · 0 评论 -
SpringBoot - IDEA逆向生成Entity
目录前言具体实现IDEA连接Mysql逆向生成EntityPersistence面板调出前言这里介绍IDEA根据数据库逆向生成Entity,数据库为Mysql。具体实现IDEA连接MysqlView -》Tool Windows -》Database 调出Database面板“✚” -》Data Source -》数据库类型新建数据源连接建立如下:逆向生成EntityView -》Tool Windows -》Persistence调出Persistence面板注:P原创 2021-08-14 15:54:56 · 1936 阅读 · 0 评论 -
JPA - 逆向生成数据表与映射关系配置
目录环境JPA逆向生成数据表映射关系配置单向一对多关系双向一对多关系单向多对多关系双向多对多关系环境SpringBoot + JPA + MysqlJPA逆向生成数据表pom.xml<!-- jpa --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artif原创 2021-08-12 15:23:58 · 1738 阅读 · 0 评论 -
SpringBoot - 多环境配置
目录项目配置启动方式项目配置项目配置如下图所示,application.yml中的配置项在任何环境下均生效,application-dev.yml中的配置在开环境下生效,application-prod.yml中的配置在生产环境下生效。配置文件的application-开头是固定规范,后面的部分是自定义的。application.ymlspring: profiles: active: devserver: port: 8080application-dev.yml原创 2021-08-11 21:41:45 · 1434 阅读 · 0 评论 -
SpringBoot - Bean validation 参数校验
目录前言常见注解参数校验的应用依赖简单的参数校验示例级联校验@Validated 与 @Valid自定义校验注解前言后台开发中对参数的校验是不可缺少的一个环节,为了解决如何优雅的对参数进行校验?JSR303(Java Specification Requests)应运而生,JSR303 是JavaBean参数校验的标准。Bean Validation 为 JavaBean 验证定义了相应的元数据模型和 API。Hibernate validator 5 是 Bean Validation 1.1原创 2021-08-11 17:55:31 · 1837 阅读 · 0 评论 -
SpringBoot - Lombok的使用
目录前言依赖常用注解生成器模式(Builder Pattern)前言Lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具。依赖// 版本号可不添加<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></dependency>常用注解注原创 2021-08-11 14:10:48 · 1890 阅读 · 0 评论 -
SpringBoot - 参数接收方式
目录前言使用@PathVariable接收路径中的参数使用@RequestParam获取路径中?后的参数使用@RequestBody获取Map对象使用@RequestBody获取实体对象前言记录几种SpringBoot中的参数接收方式使用@PathVariable接收路径中的参数@GetMapping(value = "/param/{id}") public String param(@PathVariable String id){ return id; }使用@Reque原创 2021-08-11 13:45:20 · 2675 阅读 · 0 评论 -
SpringBoot - 根据目录结构自动生成路由前缀
目录前言具体实现配置文件指定基础包自动补全路由前缀处理类自动补全路由前缀配置类测试类测试前言本文介绍如何根据目录结构给RequestMapping添加路由前缀(覆盖RequestMappingHandlerMapping中的getMappingForMethod方法,修改其中的Url),如下图的实际访问路径为:/v1/test/test。具体实现配置文件指定基础包application.propertiesapi-package = com.coisini.springbootlearn原创 2021-08-10 23:17:54 · 2126 阅读 · 3 评论 -
SpringBoot - 全局异常处理
目录前言异常的分类异常处理的分类throw和throws的区别SpringBoot全局异常处理全局异常统一封装异常类定义统一返回定义异常信息配置异常Code码配置全局异常统一处理异常测试中文乱码处理前言异常提供了一种从错误状况进行可靠恢复的途径异常的分类Java中的异常大体可以分为两类:checkedException,runtimeExceptioncheckedException 编译阶段异常,其为可检测到的异常,程序要求强制处理,应用场景:如文件读取runtimeException 运行原创 2021-08-10 22:38:02 · 1442 阅读 · 0 评论 -
SpringBoot+Vue实现Excel导出
环境SpringBoot 1.5.20Vue 2.5.2SpringBoot依赖<!-- poi --><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.0.1</version></dependency>Controller@Pos原创 2020-07-27 23:27:45 · 4215 阅读 · 5 评论