![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
springBoot
爱码猿
不登高山,不知天之高也;不临深溪,不知地之厚也。
展开
-
SpringMVC枚举类型字段处理
在日常的项目开发中经常会遇到一些取值范围固定的字段,例如性别、证件类型、会员等级等,此时我们可以利用枚举来最大程度减少字段的乱定义,统一管理枚举的值。SpringMVC中对于枚举也有默认的处理策略:对于@RequestParam,Spring是通过ConverterFactory来处理的,大致处理策略是根据枚举名称或枚举下标来转换枚举。对于@RequestBody,Spring是通过Jackson配置将json内的枚举值转换为对象的,大致处理策略同样是根据枚举名称或枚举下标来转换枚举。原创 2024-05-28 11:29:46 · 1130 阅读 · 0 评论 -
Spring Boot 获取maven打包时间
引入maven打包插件。原创 2024-03-14 22:36:34 · 487 阅读 · 0 评论 -
SpringData ES 调用分词器分词
【代码】SpringData ES 调用分词器分词。原创 2024-01-29 08:50:24 · 233 阅读 · 0 评论 -
SpringBoot Jackson 数据字典映射
在设计数据库时,我们通常会建立一个dict表,存储了项目内所有的字典名称和字典值,例如用户等级、用户职称等字典,然后其他表内的存储的值是dict_code,前端展示需要将dict_code映射为dict_value。User表有个sourceType字段(1=微信、2=在发版),返回给前端时需要返回sourceType(dict_code),和sourceTypeName(dict_key)。通过自定义JsonSerializer方式实现枚举值的动态转换。原创 2024-01-19 18:50:31 · 622 阅读 · 0 评论 -
Spring Cache 入门教程
Spring从3.1开始定义了org..cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用JCache(JSR-107)注解简化我们开发;Cache接口为缓存的组件规范定义,包含缓存的各种操作集合;Cache接口下Spring提供了各种xxxCache的实现;如RedisCache,EhCacheCache ,ConcurrentMapCache等;原创 2023-11-13 22:46:03 · 482 阅读 · 0 评论 -
SpringMVC内容协商
SpringMVC内容协商主要的功能是:根据请求头或请求参数来控制接口返回的数据格式。通过HttpMessageConvert实现。acceptformatSpringMVC内置了很多格式的转换器我们可以利用这个功能来控制接口的返回格式。如:通过format控制接口返回xml引入依赖开启参数模式访问测试:http://localhost:8080/test?format=xml。原创 2023-06-05 11:33:59 · 804 阅读 · 0 评论 -
Spring MVC 实现request请求体多次读取
spring mvc配置request请求体多次读取原创 2023-05-20 17:31:37 · 948 阅读 · 0 评论 -
SpringBoot Redis发布订阅
【代码】SpringBoot Redis发布订阅。原创 2023-05-09 09:33:26 · 1411 阅读 · 0 评论 -
SpringBoot整合WebSocket
springboot整合websocket原创 2023-03-28 20:24:02 · 1508 阅读 · 0 评论 -
SpringBoot配置Https
本地开发环境可以自己生成证书测试。原创 2023-03-27 18:07:25 · 2582 阅读 · 0 评论 -
SpringBoot整合Knife4j实现接口文档
SpringBoot整合Knife4j实现接口文档原创 2023-01-28 09:04:09 · 1627 阅读 · 0 评论 -
SpringMVC 动态申明接口
在日常的开发中,我们一般是通过@RequestMapping等注解标注在方法上来创建一个对外的接口,SpringMVC会扫描这些注解来创建。我们可以通过手动创建RequestMappingInfo的方式动态的注册和销毁接口。原创 2022-10-27 20:06:50 · 2539 阅读 · 0 评论 -
SpringBoot整合common-pool2实现对象池
使用池化主要是为了节省对象创建和销毁的开销。比如日常开发息息相关的数据源连接池,就是为了减少连接创建的时间而生的。commons-pool是apacha基金会开源的一款常见的对象池工具库。springBoot整合common-pool实现对象池。原创 2022-10-16 20:46:31 · 3304 阅读 · 0 评论 -
SpringBoot 配置定时任务多线程异步执行
SpringBoot使用==@scheduled==执行定时任务是是单线程执行的,如果某个任务阻塞或者执行时间过长,会影响其他定时任务的执行。一般在项目内都需要进行相应的配置来允许定时任务并行执行原创 2022-08-26 19:16:45 · 2647 阅读 · 0 评论 -
SpringBoot整合MinIO实现文件上传下载
springboot整合minio实现文件上传下载原创 2022-08-25 16:03:41 · 2559 阅读 · 0 评论 -
spring retry 异常重试
SpringRetry 调用方法出现异常后进行重试。场景:后端进行远程调用,可能会出现网络波动而导致远程调用失败,需要在调用失败后进行重试,重试间隔为2秒,重试次数为3次。通过spring retry就能够完美的实现...原创 2022-06-02 23:05:30 · 2194 阅读 · 0 评论 -
RestTemplate请求时设置请求头,请求参数,请求体。
RestTemplate请求时设置请求头,请求参数,请求体等原创 2022-06-01 09:57:16 · 4270 阅读 · 0 评论 -
SpringBoot配置跨域
@Configurationpublic class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowCredentials(true) .allowedHeaders("*")原创 2022-05-17 10:40:26 · 1192 阅读 · 0 评论 -
SpringBoot 实现动态数据源
SpringBoot 实现动态数据源功能: 前端请求接口时携带用户信息,后端拦截器获取用户信息后切换数据源查询数据。使用场景:多租户,sass,pass等项目。实现原理:主要通过SpringBoot提供的AbstractRoutingDataSource类,该类允许我们存入一个map,然后在通过数据源获取数据前允许我们指定一个key,然后自动的根据key从map内取对应的数据源。1 创建 DataSourceHolder类管理数据源的创建和存储@Component@NoArgsConstruct原创 2022-05-12 23:02:09 · 6664 阅读 · 6 评论 -
redis stream 实现消息队列
redis stream 实现消息队列Redis5.0带来了Stream类型。从字面上看是流类型,但其实从功能上看,应该是Redis对消息队列(MQ,Message Queue)的完善实现。基于redis实现消息队列的方式有很多:PUB/SUB,订阅/发布模式基于List的 LPUSH+BRPOP 的实现redis 实现消息对列4中方法发布订阅发布订阅优点: 典型的一对的,所有消费者都能同时消费到消息。主动通知订阅者而不是订阅者轮询去读。发布订阅缺点: 不支持多个消费者公平消费消息,消息原创 2022-04-07 16:42:15 · 8195 阅读 · 2 评论 -
Spring AOP 切点表达式
execution**execution:**用于明确指定方法返回类型,类名,方法名和参数名等与方法//匹配org.gjw包及子包下的所有类的所有方法@Pointcut("execution( public * org.gjw..*.*(..) )")public void pointCut(){}//匹配org.gjw.TestA类下的所有方法@Pointcut("execution( public * org.gjw.TestA.*(..) )")public void pointCut原创 2022-02-08 22:43:57 · 746 阅读 · 0 评论 -
利用 HandlerMethodArgumentResolver 实现Controller注入用户信息
HandlerInterceptor经常被用来解决拦截事件,如用户鉴权等。另外,Spring也向我们提供了多种解析器Resolver,如用来统一处理异常的HandlerExceptionResolver,以及今天的主角HandlerMethodArgumentResolver。HandlerMethodArgumentResolver是用来处理方法参数的解析器,包含以下2个方法:supportsParameter(返回boolean类型,为true时表示可以调用resolveArgument做参数处理)原创 2022-01-22 11:25:49 · 427 阅读 · 0 评论 -
SpringBoot 整合 caffeine+Redis 实现二级缓存
caffeine 本地缓存Caffeine是基于JAVA 1.8 Version的高性能缓存库。Caffeine提供的内存缓存使用参考Google guava的API。Caffeine是基于Google Guava Cache设计经验上改进的成果。<dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId&原创 2022-01-10 15:55:08 · 1965 阅读 · 0 评论 -
SpringBoot 使用 Feign进行远程调用、文件上传等操作
SpringBoot 使用 Feign进行远程调用原创 2021-11-21 14:43:22 · 4009 阅读 · 0 评论 -
Netty入门
Hello World1 maven导入依赖 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.63.Final</version></dependency>2 编写服务器端public class NettyServer { pub原创 2021-04-21 11:51:50 · 415 阅读 · 0 评论 -
Elasticsearch 入门教程
ElasticSearch 教程基本Restful接口创建索引PUT /student查询索引GET student删除索引DELETE student往索引内添加数据#往student内添加一条id为1的数据 如果_doc/后面不加id,es会帮我们自动是生成POST student/_doc/1{ "id":1, "name":"张三", "birthday" : "2021-05-23"}通过id查询索引内的数据GET student/_doc/1查原创 2021-05-30 23:07:25 · 474 阅读 · 2 评论 -
SpringBoot 配置类配置 ElasticSearch
@Bean public ElasticsearchRestTemplate elasticsearchRestTemplate(){ RestClientBuilder builder = RestClient.builder(new HttpHost("10.231.3.147", 12000)); final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();原创 2021-07-07 09:32:50 · 1050 阅读 · 0 评论 -
Sharding-Proxy使用
Sharding-Proxy**概念: ** Sharding-Proxy 和Sharding-JDBC所作的事情基本相同,主要的区别是sharding-proxy可以将数据库分片策略提取出来,创建一个独立的虚拟数据库,我们项目中无需任何分片配置,直接连接sharding-proxy生成的虚拟数据库即可完成分库分表策略(将分库分表逻辑独立提取出来,变为一个独立的中间件,对外提供数据库操作服务)下载: Sharding-Proxy 是一个独立的服务,需要下载,配置和运行下载地址:Sharding-Pr原创 2020-11-25 15:57:44 · 2041 阅读 · 0 评论 -
SpringBoot MybatisPlus 动态数据源
实现功能:通过访问同一个接口携带不同参数查询不同的数据库(动态进行数据源切换)1 创建一个数据源对象,管理数据源和过期时间@Data@NoArgsConstructor@AllArgsConstructorpublic class DataSourceDetails { /** * 空闲时间周期。超过这个时长没有访问的数据库连接将被释放。默认为10分钟。 */ public static long idlePeriodTime = 10 * 60 * 1000;原创 2021-08-29 09:36:17 · 965 阅读 · 0 评论 -
spring日志配置文件 logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?><!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 --><!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true --><!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果转载 2021-08-19 22:55:56 · 425 阅读 · 0 评论 -
SpringBoot 配置 Redis乱码问题
@Configurationpublic class RedisConfig { private static final StringRedisSerializer STRING_SERIALIZER = new StringRedisSerializer(); private static final GenericJackson2JsonRedisSerializer JACKSON__SERIALIZER = new GenericJackson2JsonRedisSeriali原创 2021-03-17 09:06:58 · 392 阅读 · 1 评论 -
SpringBoot 查询今年所有节假日
今天在工作中遇到了一个需求: 查询本年所有的节假日返回给前端展示。在网上找到了一个可以免费查询当年节假日的接口:非常感谢了最终写出来的代码也分享给大家了@GetMapping("/getDatePlan") public ResultData test(){ //最终结果 List<Map> result = new ArrayList(); //查询当前年 int year = LocalDateTime.now原创 2021-02-24 16:21:18 · 1090 阅读 · 0 评论 -
KKFileView 实现在线预览文件
KKFileView使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,Excel,pdf,txt,zip,rar,图片等等。项目特性:支持word excel ppt,pdf等办公文档支持txt,java,php,py,md,js,css等所有纯文本支持zip,rar,jar,tar,gzip等压缩包支持jpg,jpeg,png,gif等图片预览(翻转,缩放,镜像)支持mp3,mp4,flv等多媒体文件预览使用spring boot开发,原创 2020-12-30 23:03:24 · 5133 阅读 · 0 评论 -
SpringSecurity+JWT实现权限校验
1通过@ConfigurationProperties 读取配置文件的配置,允许用户自定义规则@ConfigurationProperties(prefix = "security.config")@Datapublic class SecurityConfigProperties { /** * token请求头名称 * */ private String tokenHeader; /** * token加解密使用的密钥 * */原创 2020-12-26 20:37:11 · 814 阅读 · 2 评论 -
@Transactional注解失效场景及解决方案
@Transactional注解不生效原因及解决方案今天再工作中遇到了一个问题:再插入数据前需要进行操作记录,因此再service层调用的保存操作记录的方法,考虑到操作记录不应被后面的操作所影响,因此将事务的传播型为设置为REQUIRES_NEW(如果当前有事务存在,将当前事务挂起,重新开启新事务执行。事务的提交或回滚不受之前事务的影响)测试时发现即使设置了REQUIRES_NEW后保存操作记录的方法仍然回被后面的代码所影响,后面代码报错,操作记录的事务也被回滚了,原因是没有通过代理对象去调用方法,因此事原创 2020-12-11 09:36:06 · 935 阅读 · 0 评论 -
SpringBoot整合RabbitMQ
RabbitMQ有段时间没有用过RabbitMQ了,所以练习一下,温故而知新,也分享给大家,共同学习。简介MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟原创 2020-12-07 17:57:54 · 564 阅读 · 1 评论 -
SpringData-JPA QueryDSL 快速入门
SpirngData-JPA QueryDSL 快速入门不可否认的是 JPA 使用是非常方便的,极简化的配置,只需要使用注解,无需任何 xml 的配置文件,语义简单易懂,但是,以上的一切都建立在单表查询的前提下的,我们可以使用 JPA 默认提供的方法,简单加轻松的完成 CRUD 操作。但是如果涉及到多表动态查询, JPA 的功能就显得有些捉襟见肘了,虽然我们可以使用注解 @Query ,在这个注解中写 SQL 或者 HQL 都是在拼接字符串,并且拼接后的字符串可读性非常的差,当然 JPA 还为我们提供了原创 2020-12-04 15:31:11 · 1493 阅读 · 0 评论 -
SpringData JPA 快速入门
SpringData JPA 快速入门SpringBoot 整合 SpringData-JPA 快速入门、一 SpringBoot配置SpringData-JPA1 引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependenc原创 2020-12-04 09:10:42 · 316 阅读 · 0 评论 -
springBoot 读取 properites文件
public class PropertiesUtils {private static Properties props;/**获取 application.properties内的文件值 */static{ Resource resource = new ClassPathResource("application.properties"); try { props = PropertiesLoaderUtils.loadProperties(resource)原创 2020-11-26 18:09:13 · 375 阅读 · 0 评论 -
sharding-jdbc使用案例 自定义主键生成策略 自定义表分区策略 自定义库分区策略
Sharding-JDBC通过配置的形式将数据库按照规则进行分片等操作Hello World通过 Sharding-JDBC 实现水平分表: 数据库内用user_1 和 user_2 通过主键进行水平拆分,id为奇数放入user_1表,id为偶数放入user_2表1 创建数据库和表create database sharding character set = utf8;use sharding;create table user_1( id int primary key auto_in原创 2020-11-23 21:32:56 · 4103 阅读 · 3 评论