spring boot
文章平均质量分 59
xiaolege_
目前重点研究Spring、Spring boot、Spring cloud、Kafka、Flink、Xxl-job、MySQL、Elastic search、Redis、Docker等,欢迎大家关注交流。
展开
-
记一次@Transactional事务回滚的问题
这两天部门组织系统测试,忍不住再次夸赞下测试组的小姐姐们真是心细啊!!!!一个简单的任务复制功能,就是copy一条数据库的现有数据进行一些处理后然后作为一条新的数据插入数据库。实现类方法添加了@Transactional(rollbackFor = Exception.class),过程中涉及两个张表:插入动作流程如下:结果由于最后一步insert table2的时候发生异常(我可以说不是我的bug吗),导致事务回滚,结果他只把最后两步的操作回滚了,碰到ddl就终止了,这个操作之前确实没..原创 2021-09-26 17:19:32 · 279 阅读 · 0 评论 -
记一次mybatis-plus数据自动填充爆露出来的多线程的问题
技术背景:spring boot+mybatis-plus做公共字段填充(MetaObjectHandler),之前项目没有接入用户系统故用户名填充都是使用的默认值,最近公司整合统一网关,接入用户信息,单例模式使用ThreadLocal<Map<String, String>> threadLocal记录当前登陆用户信息,一切看似正常,用户信息获取都正常填充记录入库。但是测试组细心的小姐姐发现有一个接口调用的过程中发生用户名被还原成默认值的情况,一开始还不信。仔细观察发原创 2021-09-26 16:59:32 · 727 阅读 · 1 评论 -
@Valid详解
@Valid用于验证注解是否符合要求,直接加在变量user之前,在变量中添加验证信息的要求,当不符合要求时就会在方法中返回message 的错误提示信息。@RestController@RequestMapping("/user")public class UserController { @PostMapping public User create (@Valid @RequestBody User user) { System.out.println(use...原创 2020-06-01 17:56:41 · 2809 阅读 · 0 评论 -
记一次spring boot升级跨域问题的坑
当前使用版本spring boot2.4.0,跨域配置如下:package com.geostar.job.admin.conf;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springf原创 2021-03-03 15:14:01 · 2665 阅读 · 3 评论 -
spring boot配置mybatis-plus二级缓存
什么是缓存?简单来讲,缓存就是存储在缓冲区里的内容,或者可以理解为存在内存中的内容。用户可以将经常查询的内容放到缓存中,再次使用时直接从缓存中取值,而不需要再查询数据库。这样做的优点是响应迅速,减少了系统资源(网络资源、CPU资源等)开销;缺点是需要占用内存资源,服务器一旦关机,缓存就会丢失,重启后需要重新将写一遍数据到内存。Mybatis的缓存Mybatis的缓存分为一级缓存和二级缓存。一级缓存是默认开启的,二级缓存需要手动开启。一级缓存是SqlSession级别的缓存,作用域是一个SqlS原创 2020-11-02 17:26:12 · 1879 阅读 · 0 评论 -
spring boot设置Gzip
随着数据量的陡增,系统服务有很多接口就爆露出问题了,F12查看耗时,发现有地方前端数据下载就耗时一点几秒,一看数据量2M,吓死个人啊,于是就想到了Gzip。为了减少数据在网络中的传输量,从而减少传输时长,增加用户体验,浏览器大都是支持Gzip压缩技术的,http的请求头 Accept-Encoding:gzip, deflate 就表示这次请求可以接受Gzip压缩后的数据,图片不要进行压缩,因为图片完全可以在项目开发中使用压缩后的图片。压缩会有一定的CPU性能损耗。下面介绍几种 Gzip压缩方式原创 2020-10-21 10:32:58 · 1747 阅读 · 0 评论 -
spring boot优雅停机,拒绝kill -9
什么是优雅停机 graceful shutdown 配置体验 相关知识 什么是优雅停机先来一段简单的代码,如下:@RestControllerpublicclassDemoController{@GetMapping("/demo")publicStringdemo()throwsInterruptedException{//模拟业务耗时处理流程Thread.sleep(20*1000L);return...原创 2020-10-13 15:32:24 · 429 阅读 · 2 评论 -
spring boot使用redistemplate优雅的操作redis
概述本文内容主要关于spring-redis 关于redis的key设计 redis的基本数据结构 介绍redis与springboot的整合 sringboot中的redistemplate的使用之前看了很多博客,大都都只是粗略的介绍,这里想要记录的全面一些,也算是一个学习的过程首发于我的个人博客:janti的个人博客关于spring-redisspring-data-redis针对jedis提供了如下功能:1. 连接池自动管理,提供了一个高度封装的“RedisTempl转载 2020-09-25 09:20:26 · 402 阅读 · 0 评论 -
Java子线程获取主线程的全局变量(ThreadLocal)
接上篇spring boot+多线程的使用,引入多线程后很大概率会遇到主线程全局变量共享给子线程的情况,以及各线程变量不共享的情况,下面就简单介绍下两个神器ThreadLocalInheritableThreadLocalThreadLocal做线程级的数据隔离InheritableThreadLocal可继承的线程变量表,可以让子线程获取到父线程中ThreadLocal的值。看个例子:public class BaseTest { public static...原创 2020-09-03 15:15:20 · 7700 阅读 · 2 评论 -
springboot日志组件-logback详解
虽然logback已经用了很长时间了,但是今天偶然发现了一个很牛逼的功能,这里记录一下顺便把logback的详细配置也介绍一下。介绍略,就知道你们喜欢快餐。。。直接上干货。楼主今天发现的功能在文末哦,不看绝对不后悔有福了伙计们,硬菜,楼主现在使用的配置给你们借鉴下:(注释也要注意看啊,很重要。)<?xml version="1.0" encoding="utf-8" ?><!--说明: 1. 文件的命名和加载顺序有关 logback.xml早于原创 2020-08-31 17:35:49 · 1923 阅读 · 0 评论 -
spring boot+多线程实践(异步+返回值)
不扯淡了,直接开干,注意点在最后一定一定要看。在Springboot中对其进行了简化处理,只需要配置一个类型为java.util.concurrent.TaskExecutor或其子类的bean,并在配置类或直接在程序入口类上声明注解@EnableAsync。调用也简单,在由Spring管理的对象的方法上标注注解@Async,显式调用即可生效。以下是一个带有返回值的异步线程任务示例:配置类:/** * @Description: 配置类实现AsyncConfigurer接...原创 2020-08-25 16:53:25 · 6920 阅读 · 0 评论 -
spring boot获取容器所有初始化的bean
//获取springboot所有加载的bean@Beanpublic CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args -> { System.out.println("Let's inspect the beans provided by Spring Boot:"); String[] beanNames = ctx.getBeanDefinition.原创 2020-07-03 14:30:53 · 626 阅读 · 0 评论 -
基于springboot的RestTemplate、okhttp和HttpClient对比
1、HttpClient:代码复杂,还得操心资源回收等。代码很复杂,冗余代码多,不建议直接使用。2、RestTemplate: 是 Spring 提供的用于访问Rest服务的客户端, RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。引入jar包: <dependency> <groupId>org.springframework.boot</groupId>原创 2020-06-28 09:46:44 · 1092 阅读 · 0 评论 -
spring boot初始化完成时(两种方式)执行某种操作
第一种:实现接口ApplicationListener,并重写public void onApplicationEvent(ApplicationEvent event) {}可以在容器初始话的时候执行这个方法。事件类型有以下几种:1、ApplicationContextEvent是spring内置事件的父抽象类,构造方法传入spring的context容器,同时也有获取sprin...原创 2019-12-03 10:15:32 · 4448 阅读 · 1 评论 -
spring boot配置Jackson详解
Jackson介绍:Spring Boot支持与三种JSON mapping库集成:Gson、Jackson和JSON-B。Jackson是首选和默认的。Jackson是spring-boot-starter-json依赖中的一部分,spring-boot-starter-web中包含spring-boot-starter-json。也就是说,当项目中引入spring-boot-start...原创 2019-11-26 16:48:35 · 3346 阅读 · 1 评论 -
druid连接池配置参数详解
配置 缺省值 说明 name 配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。 如果没有配置,将会生成一个名字,格式是:"DataSource-" + System.identityHashCode(this) jdbcUrl 连接数据库的url,不同数据库不一样。例如: mysql : jdbc:m...原创 2019-10-31 14:31:07 · 11384 阅读 · 0 评论 -
spring boot+Kafka简单集成demo
最近不忙自己看了下Kafka相关的东西,这里简单介绍下spring boot集成Kafka一些注意点。我也是在学习过程中,有什么理解不到位的地方还望不吝赐教互相学习。Kafka:Kafka相关知识介绍及安装可参见下面这篇博文,https://blog.csdn.net/xiaolegeaizy/article/details/100736637介绍的很详细了,不再赘述,这里强调一下容易...原创 2019-10-16 10:23:51 · 442 阅读 · 0 评论 -
spring boot需注意点整理
目前最流行的框架莫过于spring boot和spring cloud了,相信大家都对这两个多多少少都有了解。但是在运用过程中难免有些地方会遇到问题,以下简单整理一下我再次学习spring boot的过程中以前没有注意到的或者容易被人忽视的知识点。相信你看了也会有种恍然大悟的感觉。-------------------------------持续更新--------------------...原创 2019-10-14 11:16:12 · 647 阅读 · 0 评论 -
@JsonIgnoreProperties、@JsonIgnore、@JsonFormat
问题由来:今天看大神网上发布的一个开源项目,看到使用了这个注解,不甚了解百度了一下。springboot项目中定义了很多类,我们在rest返回中直接返回或者在返回对象中使用这些类,spring已经使用jackson自动帮我们完成这些的to json。但是有时候自动转的json内容太多,或者格式不符合我们的期望,因此需要调整类的to json过程,或者说希望自定义类的json过程。解决办法...转载 2019-10-09 09:59:27 · 1069 阅读 · 0 评论