springboot
文章平均质量分 68
一梦喂马.
这个作者很懒,什么都没留下…
展开
-
springboot实现多租户动态路由代码
01 背景当我们在做项目时,特别是ToB的项目,会发生一种场景,即大的业务流程是一样的,但是在某个节点,不同的租户有不同的业务需求。这就需要我们针对不同的租户将代码路由到不同的实现上面,从而执行正确的业务逻辑。如下图所示,我们现在有个业务逻辑,需要依次执行A、B、C、D四段代码逻辑。但是B和D节点,不同的租户有不同的业务逻辑,需要单独去实现,这时就需要我们能通过租户标识动态的路由到自己的实现上面。02 思路我们上节图中的B节点为例。首先,我们得创建一个X租户和所有租户的父类,比如我们这里就叫原创 2021-03-18 15:56:10 · 2135 阅读 · 7 评论 -
Mybatis 通过拦截器动态修改SQL
01 使用场景当我们在多租户的项目中,编写SQL语句都要带上tenant字段,用于区分不同的租户只能操作自己的数据。比如,像下面的SQLselect * from member where id = #{id} and tenant = #{tenant}但是,我们的tenant属性一般是放在一个ThreadLocal的变量中的,便于我们随时获取该属性进行一些业务处理。public class TenantContext { private static final ThreadLoca原创 2021-03-17 18:47:51 · 4145 阅读 · 2 评论 -
SpringBoot 使用 beforeBodyWrite 实现统一的接口返回类型
通常我们在 Spring Boot 的项目中,会使用一个类来作为统一的接口返回,比如这样:import lombok.Data;@Datapublic class Result<T> { private int code; private String message; private T data; public static <T> Result<T> success(T t) { Result<T>原创 2020-07-20 20:06:13 · 16871 阅读 · 10 评论 -
springboot整合redisson
01 搭建redis服务我是在自己的云服务通过docker搭建了一个单机的redis服务docker run -d --rm --name redis5 -p 6379:6379 redis --requirepass "123456"02 创建应用1.在pom.xml文件导入redisson依赖<dependency> <groupId>org.red...原创 2019-12-12 15:12:10 · 2706 阅读 · 3 评论 -
springboot字段的权限控制
有些时候我们不想让一些权限不足的人看到一些敏感字段,因此我们可以使用注解+AOP+反射来实现将返回的对象中的敏感字段设置为null值。1. 编写一个注解,在属性上使用,用来控制字段的权限@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface ShowField { String...原创 2019-05-29 16:53:00 · 4230 阅读 · 1 评论 -
springboot2整合thymeleaf模板引擎
1 什么是thymeleafThymeleaf是用于Web和独立环境的现代服务器端Java模板引擎。Thymeleaf的主要目标是将优雅的自然模板带到您的开发工作流程中—HTML能够在浏览器中正确显示,并且可以作为静态原型,从而在开发团队中实现更强大的协作。Thymeleaf能够处理HTML,XML,JavaScript,CSS甚至纯文本。2 使用方法2.1 在pom.xml中导入th...原创 2019-07-11 12:02:01 · 3056 阅读 · 1 评论 -
springboot实现一个starter
1 pom文件引入依赖先新建一个maven工程。然后,在pom文件引入需要的依赖:<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boo...原创 2019-09-05 23:39:48 · 208 阅读 · 0 评论 -
springboot同一个类里的方法之间调用事务不起作用
今天在看项目代码的时候,发现在service层,有方法调用同类中的方法,SonarLint提示有bug。下图是我自己做测试时写的demo代码:经过测试发现,当A方法调用同类中带有@Transactional注解的B方法时,被@Transactional注解的B方法的事务是不起作用的。原因:spring会扫描@Transactional的类和方法,并通过动态代理实现启动事务的代理方法。这...原创 2019-09-06 16:53:52 · 5789 阅读 · 2 评论 -
springboot整合apollo配置中心
1 下载apollo源码源码地址2 使用docker-compose启动apollo进入到启动docker compose 的文件路径,我这里是在centos系统启动的apollo。我已经提前安装好docker和docker-compose。输入执行命令[root@jamie docker-quick-start]# docker-compose up启动成功后,我们就可以在浏览器...原创 2019-09-12 00:07:09 · 689 阅读 · 0 评论 -
springboot整合redis缓存
使用redis作为缓存1. 在pom.xml文件中导入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>...原创 2018-11-02 13:54:31 · 318 阅读 · 0 评论 -
springboot整合zookeeper实现分布式锁
目录运行zookeeper服务springboot应用配置CuratorFramework使用zookeeper实现集群只一个应用实例执行定时任务使用zookeeper实现分布式锁使用zookeeper实现调度任务运行zookeeper服务安装jdk去官网下载zookeeper的压缩包,我这里下载的是3.4.10版本解压后进入到zookeeper-3.4.10/conf,修改zoo_sa...原创 2018-11-01 11:32:27 · 4422 阅读 · 0 评论 -
springboot2整合kafka
一、下载和启动kafka 启动kafka服务之前要先启动zookeeper,目前kafka的压缩包中是包含zookeeper的1、从官网下载kafka的压缩包:http://kafka.apache.org/downloads 2、解压下载的压缩包 ,我本地解压后的kafka文件夹放在了E:\keluosi目录下 3、启动zookeeperE:\keluosi\kafka_2...原创 2018-09-14 17:42:50 · 9760 阅读 · 1 评论 -
springboot整合mybatis
1.在pom.xml文件中导入需要的依赖&lt;dependency&gt; &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt; &原创 2018-06-15 14:17:44 · 151 阅读 · 0 评论 -
springboot 解决前后端分离时的跨域问题
springboot 解决前后端分离时的跨域问题方式1:在controller的方法上添加注解还可以在控制器类级别上添加这个注释,以便在这个类的所有处理程序方法上启用CORS。import org.springframework.web.bind.annotation.CrossOrigin;import org.springframework.web.bind.anno...原创 2018-06-15 14:16:57 · 2822 阅读 · 0 评论 -
springboot2整合oauth2
1.背景项目由springboot1.5.X升级到springboot2.0.0后,导致各组件API以及依赖包发生了变化。完整项目demo:https://gitee.com/zkane/springboot2-oauth2.git2.spring securitySpring Security 从入门到进阶系列教程网址:http://www.spring4all.com/ar...原创 2018-06-15 14:10:09 · 67237 阅读 · 16 评论 -
自动化部署jenkins+Linux+tomcat+git+maven+springboot2
一.项目简介使用Jenkins实现自动持续集成部署springboot2项目到Tomcat。 Linux系统为centos7,并且需要有能被外网访问的IP(建议使用云服务器)和能够上网 代码管理工具为git二.安装必要的软件1.安装Tomcat 打开Tomcat的官网下载压缩包 使用远程工具拷贝到Linux系统的/opt目录下 解压压缩包,剪切到/opt/local/...原创 2018-07-20 13:45:32 · 613 阅读 · 1 评论 -
springcloud项目搭建(Finchley.RELEASE版)
spring-cloud-demodemo地址:https://gitee.com/zkane/spring-cloud-demo项目介绍项目基于springboot2.0和springcloud Finchley.RC1搭建注册中心1. 在pom.xml文件中导入依赖&amp;amp;amp;amp;amp;lt;?xml version=&amp;amp;amp;amp;quot;1.0&amp;amp;amp;amp;原创 2018-06-15 14:24:14 · 16330 阅读 · 1 评论 -
spring中的事务
事务在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行事务用来管理 insert,update,delete 语句事务必须满足的4个条件(ACID)原子性(atomicity):一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在某个环节。事务在执行过程...原创 2018-08-19 19:33:17 · 189 阅读 · 0 评论 -
springboot实现配置文件的对称加密
1.在pom.xml文件中添加依赖<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>1.17</versio...原创 2018-08-21 14:41:59 · 1061 阅读 · 0 评论 -
springboot整合swagger
1.在pom.xml文件中加入依赖<!-- 使用Swagger2构建RESTful API文档 --><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <versi...原创 2018-08-21 14:46:27 · 212 阅读 · 0 评论 -
restful接口处理返回的json
针对前后端分离时,返回给前端的json格式的数据需要处理处理规则 String类型由null修改为返回“”List类型由null修改为[ ]实现源码import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.Aspect;import org.aspectj.l...原创 2018-07-13 11:09:58 · 3529 阅读 · 0 评论