Spring Boot
文章平均质量分 61
西丽沙河尚
深圳南山西丽程序猿
展开
-
如何实现自定义的 Spring Boot Starter?
前言Spring Boot 可以省略众多的繁琐配置,它的众多 starter 可以说是功不可没。例如 Spring Boot 中集成redis,只需要 pom.xml 中引入 spring-boot-starter-data-redis,配置文件中加入s pring.redis.database 等几个关键配置项即可,常用的 starter 还有 spring-boot-starter-web、spring-boot-starter-test、spring-boot-starter-jdbc,相比于传统的原创 2021-03-23 19:26:29 · 317 阅读 · 0 评论 -
Spring Boot 参数校验
前言作为服务端开发,验证前端传入的参数的合法性是一个必不可少的步骤,但是验证参数基本上是一个体力活,而且冗余代码繁多,也影响代码的可阅读性,所以有没有一个比较优雅的方式来解决这个问题?JSR-303验证框架,JSR-303 是Java EE 6 中的一项子规范,叫做Bean Validation,官方参考实现是Hibernate Validator(与Hibernate ORM 没有关系),JSR 303 用于对Java Bean 中的字段的值进行验证,确保输入进来的数据在语义上是正确的,使验证逻辑从原创 2020-12-08 20:29:17 · 947 阅读 · 4 评论 -
Spring Boot + Flyway 管理数据库版本
Flyway 介绍Flyway是一个简单开源数据库版本控制器(约定大于配置),主要提供migrate、clean、info、validate、baseline、repair等命令。它支持SQL(PL/SQL、T-SQL)方式和Java方式,支持命令行客户端等,还提供一系列的插件支持(Maven、Gradle、SBT、ANT等)。Flyway 可以独立于应用实现管理并跟踪数据库变更,支持数据库版...原创 2019-12-10 16:29:25 · 711 阅读 · 0 评论 -
为你的 Java Web 项目加入 Swagger
Swagger for Spring BootSwagger 可用于生成、描述、调用和可视化 RESTful 风格接口的API,是一套规范和完整的开发框架,并且能对接口进行单独测试。Spring Boot 是目前对 Swagger 支持最好的框架,只需要引入 springfox-swagger 相关依赖:<dependency> <groupId>io.spr...原创 2019-11-07 11:54:26 · 1982 阅读 · 0 评论 -
Spring Boot 日志框架
(一)门面模式在平常的系统开发中,日志起到了重要的作用,日志写得好对于线上问题追踪有着很大的帮助。一个好的日志框架,既要方便易用,也要有较好的性能,减少日志输出对系统内存、CPU 的影响。在学习 Spring Boot 的日志框架之前,我们有必要先了解一下日志框架的设计模式——门面模式。在软件开发领域有这样一句话:计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。而门面模式就是对于...原创 2019-10-14 17:40:57 · 1203 阅读 · 0 评论 -
MockMVC登录后测试SpringBoot项目包含Shiro Subject的控制层方法
UnavailableSecurityManagerException在常规SpringBoot项目中,我们往往在单元测试类中直接使用@Autowired注解注入Bean实例,并在Test方法中调用实例方法。但如果该项目加入了Shiro安全框架,并且在某个被测试的实例方法中存在获取当前Shiro Subject对象的方法:package com.jake.manager.controller;...原创 2019-06-24 19:06:29 · 3713 阅读 · 0 评论 -
基于Spring Security OAuth2的SSO(单点登录)
基础理论What is SSO?单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。What is Spring Security?Spring Security官方解释What is OAuth2?首先简单了解一下用于验证及授权的OAuth协议,...原创 2019-07-08 20:11:27 · 10084 阅读 · 2 评论 -
在 Spring Boot 项目中实现文件下载功能
需求在您的 springboot 项目中,可能会存在让用户下载文档的需求,比如让用户下载 readme 文档来更好地了解该项目的概况或使用方法。所以,您需要为用户提供可以下载文件的 API ,将用户希望获取的文件作为下载资源返回给前端。代码maven 依赖请您创建好一个 springboot 项目,一定要引入 web 依赖:<dependency> <grou...原创 2019-09-17 11:48:01 · 17799 阅读 · 6 评论 -
Spring Boot + MyBatis 多数据源解决方案
(一)需求基于 Spring Boot + MyBatis 是目前最流行的后端 CRUD 开发框架组合,在 CRUD 项目开发过程中,往往会需要连接多个数据库。目前解决方案有 JPA 多数据源方案、AOP 动态切换等,但都比较复杂,比如引入 JPA 甚至要求开发工程师能够熟悉 JPA 框架的CRUD。本文本着最简化解决方案的原则,立足于 Spring Boot + MyBatis 来做多数据源...原创 2019-09-17 15:16:23 · 1947 阅读 · 1 评论 -
Spring Boot + JQuery Ajax 实现文件上传功能
(一)需求在 Spring Boot 项目中实现文件下载功能 后,项目需要进一步实现 Excel 文件上传功能,已供后端代码读取 Excel 中单元格的数据。本文的代码在下载功能的基础之上继续扩展。(二)代码2.1 后端代码控制层@PostMapping("upload")public String uploadFile(MultipartFile file) { String...原创 2019-09-24 15:54:04 · 3214 阅读 · 0 评论 -
基于 Spring Boot + MyBatis + PageHelper + Thymeleaf 的数据分页展示
(一)需求简单的前端分页展示功能:以表格的方式展现每页数据,在表格标题下填入对应的字段值,页脚处显示当前页、总记录页数和条数,一键跳转至首尾页和相邻页。在页眉处按照始末时间查询记录。(二)代码2.1 后端代码控制层在控制层需要返回给前端的 model 属性有分页对象 pageInfo,数据 records;另外,由于按照时间查询后,需要在前端页面中填充时间,所以把 startTime ...原创 2019-09-25 17:55:50 · 1709 阅读 · 0 评论 -
Spring Boot + JPA 最佳实践
(一)前言随着 Java 技术和微服务技术逐渐广泛应用,Spring Cloud、Spring Boot 逐渐成为 Java 开发的主流框架,ORM 框架也因此得到重视。纵观目前主流的 ORM 框架,MyBatis 以灵活著称,但是需要维护复杂的配置,并且不是 Spring 官方的天然全家桶,还得做额外的配置工作;Hibernate 以 HQL 和关系映射著称,但使用起来并不灵活。Sprin...原创 2019-10-08 10:58:26 · 1590 阅读 · 0 评论 -
都是MyBatis分页工具PageHelper惹的祸 —— 记一次加入GROUP BY分组查询成功,不分组则失败的奇怪现象Debug过程
项目技术框架请您打开世界上最好使的Java编译器IntelliJ IDEA,建一个SpringBoot项目,保证项目中包含以下依赖:后端框架:SpringBoot + JUnit数据库持久化:MySQL + MyBatis测试数据请您打开可爱的小海豚SQLyog,运行以下SQL建表:/*SQLyog Ultimate v12.08 (64 bit)MySQL - 5.5.62 ...原创 2019-07-01 20:07:05 · 6430 阅读 · 0 评论 -
基于Bitbucket和Bamboo的SpringBoot项目CICD(持续集成和部署)
基本概念简单地说,Bitbucket是公司内部的Git远端源码管理工具,相当于Gitlab或Github;Bamboo是自动化运维工具,可以构建、打包、部署,相当于Jenkins。可以前往Atlassian官网了解Bitbucket、Bamboo的详细信息:What is Bitbucket?What is Bamboo?Integrating Bamboo with Bitbucket...原创 2019-06-13 18:48:10 · 4466 阅读 · 4 评论 -
springboot配置文件application中spring.profile.active和include属性的区别
0. 参考文档Spring框架官方说明https://www.logicbig.com/tutorials/spring-framework/spring-boot/profile-specific-properties-with-include-property.html1. 概念Properties from spring.profile.include are always loa...原创 2019-05-29 18:01:52 · 3553 阅读 · 0 评论 -
SpringBoot + RabbitMQ实战(生产者、消费者分离)
IDE:Intellij Idea 2018.1.5based on: jdk 1.8.0_191建立spring工程自行命名Group和Artifact创建maven项目是其中的group id和artifact id怎么填写groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两...原创 2018-11-20 17:08:41 · 1685 阅读 · 0 评论 -
基于不同版本Hibernate的OracleXmlType处理
需求需要从Oracle数据库中查出xmltype类型的数据,并且与pojo类中的org.w3c.dom.Document类型的字段对应。由于Hibernate4(4.3.11.Final)和Hibernate5(5.3.7.Final)对于org.hibernate.usertype.UserType接口的nullSafeGet和nullSafeSet方法的形参定义不同,所以在Hibernate...原创 2018-12-11 16:51:04 · 457 阅读 · 0 评论 -
Spring Boot 2 + JPA / Hibernate 5 注入 SessionFactory 的正确姿势
pom中整合SpringBoot和Hibernate处:确定springboot版本: &amp;lt;parent&amp;gt; &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;sp原创 2018-12-24 13:48:23 · 10931 阅读 · 6 评论 -
SpringBoot + RabbitMQ实战之通过代码熟悉三种交换机(Direct、Topic和Fanout)
Topic相关配置,创建Topic交换机,并绑定队列。Topic交换机中路由键有一套规范化的命名规则,参考博客:https://www.jianshu.com/p/419ecc092f1eTopic Exchange转发消息主要是根据通配符。在这种交换机下,队列和交换机的绑定会定义一种路由模式,那么,通配符就要在这种路由模式和路由键之间匹配后交换机才能转发消息。在这种交换机模式下:(1...原创 2019-01-22 09:18:21 · 1856 阅读 · 1 评论 -
Spring Cloud+ Eureka微服务基础项目搭建(已实现调用增删改查微服务,持续更新)
O、Spring Cloud Eureka概念Spring Cloud Eureka是什么?Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于NetflixEureka做了二次封装,主要负责完成微服务架构中的服务治理功能。Spring Cloud通过为Eureka增加了SpringBoot风格的自动化配置,我们只需通过简单引入依赖...原创 2019-02-21 17:12:39 · 4755 阅读 · 2 评论 -
SpringBoot+MySQL+MyBatis(Mapper.xml方式)实现简单的多表CRUD(RESTful风格HTTP接口)
一、准备工作1.1 创建Spring工程在IntelliJ IDEA中新建Spring工程,选择Web、MyBatis、MySQL等依赖。配置文件application.propertiesspring.datasource.url=jdbc:mysql://localhost:3306/springbootdb?useUnicode=true&amp;characterEncoding=...原创 2019-01-30 18:21:54 · 1731 阅读 · 0 评论 -
SapJCO问题记录及解决办法
一、解决SpringBoot项目使用sapjco依赖jar包的冲突问题1.1 背景在我之前的博文《SpringMVC + RabbitMQ实战(XML配置rabbit,监听多条队列)》提到过使用SpringMVC而不是使用SpringBoot的原因是SpringBoot与sapjco.jar的冲突问题。It is not allowed to rename or repackage the ...原创 2019-02-23 15:53:27 · 6898 阅读 · 10 评论 -
SpringBoot + Shiro实战:实现Web应用的用户登录认证、Cookie自动登录和注销
pom.xml<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0-RC2</version></dependency>Employee....原创 2019-03-24 23:51:05 · 2112 阅读 · 0 评论 -
SpringBoot框架下基于LettuceConnectionFactory的RedisTemplate切换数据库的正确姿势
package com.jake.bpmmanager.util;import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;public class RedisUtil ...原创 2019-03-29 14:33:35 · 9780 阅读 · 6 评论 -
基于SpringBoot的多模块项目引入其他模块时@Autowired无法注入其他模块stereotype注解类对象的问题解决
多模块注入问题在多模块(如,基于SpringBoot的微服务)项目中,往往需要在一个模块中注入另一个模块中的服务层(@Service标记)或持久层(@Repository标记)类的对象。假设模块A依赖于模块B,并且需要注入模块B中的BService对象,那么第一步,需要在A的pom文件中引入B作为依赖:<dependency> <groupId>com.exa...原创 2019-04-09 15:46:25 · 20900 阅读 · 6 评论 -
基于SpringBoot的多模块(Multi-Modules)Maven项目建立、运行和打包
一、多模块项目建立父工程管理着项目中所有通用的maven依赖,子模块继承父工程(模块)后,可以减少子模块pom文件中依赖的重复添加,也便于统一依赖的版本。1.1 父工程或父模块方式1:根项目即为父工程使用IntelliJ IDEA新建SpringBoot项目,删除其中的src,保留pom文件。然后在此项目基础上new module。这种项目目录下,项目根路径处会有一个pom文件。方式2...原创 2019-04-15 11:34:14 · 1172 阅读 · 0 评论 -
SpringBoot理论
SpringBoot理论SpringBoot是Spring框架的快速开发版本,降低了开发者在Spring框架下的开发成本,但并没有增强Spring的功能。SpringBoot核心功能1. 起步依赖也就是各种springboot与其他框架整合出的starter<dependency> <groupId>org.springframework.boot</gr...原创 2018-11-04 23:23:03 · 359 阅读 · 0 评论