自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 收藏
  • 关注

原创 记录个人成长历史

个人时间线记录

2021-12-12 22:39:58 485

原创 设计第三方jar包中有bean对象时,要如何自动加载到被引用的应用中(EnableAutoConfiguration、BeanDefinitionRegistryPostProcessor使用)

如何设计第三方jar包中bean对象,可以很好被引用的项目无感使用

2023-03-12 11:31:12 78

原创 @ConfigurationProperties在方法上的使用

在学习spring的时候,@ConfigurationProperties应该经常被使用到,作用在类上的时候,将该类的属性取值与配置文件绑定,并生成配置bean对象,放入spring容器中,提供给其他地方使用。在工作中,或者看spring内部代码的时候,无意发现@ConfigurationProperties居然还可以用在方法上// targer:可作用在类、方法上 @Target({似乎平时我们都是用在类上的,因此特意写这篇文章记录一下,记录@ConfigurationProperties的使用方式。

2023-02-26 22:45:00 292

原创 @ExceptionHandler处理全局异常的优先级说明

在工作中,遇到使用@RestControllerAdvice与@ExceptionHandler注解进行全局异常错误处理(之前写过文章即设置了全局异常处理方法,又设置了controller层异常处理的方法,优先选择自己的controller层。而在这次工作中,遇到了:在不同包下都设置了全局异常处理的方法,而并不是按照错误类型越精确就使用谁的方法进行处理,因此,特意研究一下,并记录下来。

2023-02-22 22:41:37 200 1

原创 ObjectMapper转化对象常用方法(转LIst、Map,以及Type、JavaType、constructType的学习)

在工作中,必然少不了JSON转化对象,而一般来说JSON的转化,要么就是在controller层,springboot帮忙转化好了,要么就是简单的常转List、Map等。而在学习Feign时,可以自定义Decoder解析器,对返回报文做个性化处理,但此时对方返回的数据就需要自己将json字符串转为对应的对象了。而在自己转化的时候,发现ObjectMapper提供如下两个方法:一个是class类型的参数,一个是JavaType类型的参数,而该decode方法中,只有Type类型,那到底应该如何操作呢,请看本文

2023-02-07 00:30:08 1143

原创 Mybatis中xxx对象无法转化为Optional对象(cannot be cast to java.util.Optional)

在前几天工作的时候,突然发现如下报错:从上述报错信息可以得出:某个对象无法转化为Optional对象。而对应的代码如下:无论从哪里看,都感觉没有任何问题,不经感概到居然还有不能使用Optional的吗?此时,长吸一口烟,压压惊。

2023-02-05 17:59:00 83

原创 java中实现分页的常见几种方式

无论是自我学习中,还是在工作中,固然会遇到与前端搭配实现分页的功能,发现有几种方式,特此记录一下。

2022-12-18 23:19:59 5238 1

原创 MessageFormat的具体使用(格式化消息)

一篇文章搞懂MessageFormat的文本替换方式。

2022-12-17 15:42:57 425

原创 mybatis中其他数据源也使用XML进行操作(SqlSessionFactory.openSession(Connection connection)方法)

当前在使用springboot+mybatis的时候,通常会先在配置文件中配置好数据源,并在Mapper.xml文件编写好相关SQL,使用mybatis进行对数据库进行所谓的crud操作。有时候会出现一个项目需要跟多个数据源进行相关操作,通常是使用JdbcTemplate对另一个数据源进行crud相关操作,虽也可以实现功能,但将SQL写在类里面,与本数据源将SQL写到了XML文件中,总是感觉格格不入,为了统一项目SQL的存放位置,进而研究了SqlSessionFactory.openSession。

2022-12-07 18:20:54 551

原创 mybatis的xml中<trim>标签的用法

在工作中离不开跟数据库打交道,目前流行的固然是mybatis,在xml中可能会出现where条件需要传入参数才能定下来的sql时候,sql应该怎么写才不会报错呢

2022-11-29 21:53:25 757 2

原创 idea如何快速找到项目中对应的类(包括源码)

最近在看某些功能的时候,会去看对应的源码,而有时候只知道类名,不知道从哪里进入源码,因此就比较好奇,idea的全局搜索功能为啥无法搜索到jar包(即class文件里面的内容呢),所以记录一下。

2022-11-27 16:16:24 2572

原创 oracle中将数据进行排序之后,获取前几行数据的写法(rownum、fetch方式)

无论在工作中,还是学习中,都会出现这样子的需求,对某张表进行了排序(按时间排序也好,其他字段排序也罢),然后获取前x行的数据,由于工作中经常出现,因此写篇文章记录一下多种写法。

2022-10-23 15:50:44 2014 2

原创 SQL中的case then的使用(select、update、insert、delete中各自使用)

在工作一段时间后发现,有时候有些事情可以让SQL帮我们做好,并不用傻傻把数据拿到java内存中,再用java进行处理,总结就是:能用一条SQL解决的事情,为什么还要在java程序做过多的处理。

2022-09-18 22:39:44 579

原创 支持在线写SQL的Oracle学习免费网站(个人常使用)

在工作中使用的是oracle数据库,平时想在家测试一些sql是否可以跑的过,可惜自己电脑并没有安装oracle数据库,甚至完全不想安装到本地,因为据说安装oracle数据库会占很多什么什么…因此,上次在网络上查询了一下,发现了一个比较不错的Oracle在线可以执行sql的网站。测试过了该网站,基本上的SQL都可以支持,还是很不错的网站,直接三连。

2022-09-03 15:43:46 1684

原创 ObjectMapper反序列化中,报错不存在如默认构造函数的原因以及解决方法

在json反序列化的时候,出现了报错,没有存在默认构造函数(ObjectMapper)Json转化对象的基本原理。

2022-08-13 18:49:37 1111

原创 若枚举映射的值不存在,则不进行反序列化

在开发中会经常使用到枚举,而使用其的时候,可能会出现传的值并不在枚举定义的值中,则报错;出现这样子的原因就是对应的值并不存在枚举里面,从而无法进行正常的对象转换赋值,一般经常出现场景无非两个地方一、controller层接口被外部调用的时候;二、mybatis查询结果出来反序列化的时候。某天突发想法,为什么在反序列化的时候,没有传入的值并不在枚举映射的值时候,不报错,自动赋值为null呢?...

2022-07-30 09:24:59 317

原创 @ConstructorProperties注解理解以及其对应使用方式

@ConstructorProperties注解的使用方式。

2022-07-24 23:37:55 809

原创 Stream流中的Map与flatMap的区别

Stream流中的Map与flatMap的区别

2022-07-20 22:20:20 1736 1

原创 如何正确截取字符串(例:应用报错信息截取入库操作)

如何正确截取字符串,例如 应用报错信息太大,如何将报错信息截取入库操作

2022-07-03 12:33:25 625

原创 excel动态生成Sql语句

文章目录0. 前言1. 先说结论2. 例子0. 前言由于工作原因,无意中发现有时候有些数据来由形式是excel文件,需要把里面的值变成sql语句,然后去数据库中执行。因此记录下如何让excel动态生成sql语句,其实这一部分是属性excel功能的,但工作出现过,那就不放过它,记录下来。1. 先说结论excel中,如果需要动态表示某列某行的值的时候,使用: “&A2&”代表:A列第二行的数值如果是要写成sql,如下:=“update user set username =

2022-05-22 16:29:01 2538

原创 springboot中EnableAutoConfiguration自动装配的使用

文章目录0. 先说结论1. 前言2. 例子1. springboot默认扫描路径2. 引入第三方jar包(里面也有bean对象)3. 小总结一下4. 为什么需要@EnableConfigurationProperties呢?0. 先说结论EnableAutoConfiguration自动装配的作用:即把指定的类构造成对象,并放入spring容器中,使其成为bean对象,作用类似@Bean注解。springboot启动的时候,会扫描该项目下所有spring.factories文件。1. 前言在

2022-05-22 16:05:05 4229 17

原创 如何把自己写的jar包打进本地maven仓库呢(也是springboot项目怎么打成SDK)

文章目录1. 前言2. 例子1. 前言有时候看见别人的工具类jar包,突发自己写的方法,要怎么打成jar包并存在本地的maven仓库呢2. 例子先准备好一个springboot项目,把启动类删除掉,准备个方法:重点:在使用springboot项目的时候,不要使用springboot自带的maven打包,换成普通的maven打包。在pom.xml中,原来配置如下(springboot自带的maven): <build> <plugins&gt

2022-05-18 22:36:50 1813 12

原创 @NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor的区别以及在springboot常用地方

文章目录1. 先说结论2. 代码解析区别1. @AllArgsConstructor2. @RequiredArgsConstructor3. 场景使用---代替@Autowired注入bean对象1. @AllArgsConstructor2. @RequiredArgsConstructor3. @RequiredArgsConstructor 与 @AllArgsConstructor 在注入bean上的区别4. 总结1. 先说结论区别:@NoArgsConstructor:生成无参的构造方法

2022-05-06 21:31:33 7814 3

原创 spring的构造函数注入属性@ConstructorBinding

文章目录0. 前言1. 先说结论2. 快速入门3. 其他情况案例1. 属性不在构造函数的参数列表中,无法被注入2. 使用@ConstructorBinding的类上再使用@Component注解,会报错0. 前言前情回顾:实体类使用@Builder,导致@ConfigurationProperties注入属性失败根据上一篇文章,引出如下问题:1. 先说结论@ConstructorBinding注解:这个注解是SpringBoot在2.2发行版中添加的,添加该注解的属性配置类不再需要添加

2022-04-24 22:53:47 635

原创 实体类使用@Builder,导致@ConfigurationProperties注入属性失败

文章目录1. 前言2. 场景3. 解释4. 解决方法5. 思考1. 前言这里只是列出,可能需要补一下的知识点:具体的yml文件字符串、List、Map的书写方式并使用@ConfigurationProperties注入配置类.使用@Builder导致的无法创建无参构造方法2. 场景@ConfigurationProperties注入属性,有两个很重要的条件:该类必须是bean对象,即加了@Component注解。该类必须得有set方法,即加@Setter注解。偶然一次发现,

2022-04-24 21:47:27 1183

原创 使用@Builder导致的无法创建无参构造方法

文章目录1. 前言2. 先说结论3. 演示4. 解决方法1. 在实体类上再加上@AllArgsConstructor即可2. 手写个无参构造函数并加上@Tolerate3. 手写有参无参构造方法1. 前言在创建实体类的时候,有时候参数过于多,如果使用有参数的构造函数,实在看起来不是很优雅,一般都会想使用@Builder构建者模式来进行创建对象,不仅仅优雅,而且还方便。当偶然机会发现,如果使用了@Builder,该实体类会失去无参构造方法。具体现象如下:当不加任何注解的时候,完成正常:当加了@

2022-04-24 21:25:03 2612

原创 (ObjectMapper)Json转化对象的基本原理

文章目录1. 前言2. 先说结论3. 证明结论4. 使用@JsonAutoDetect定义字段、方法的访问可见性规则1. 前言在实际开发过程中,会经常接收Json字符串并转化为相应对象,而这个转化过程中若报错,无非提示,没有set方法,或者没有get方法,或者静态内部类没有默认构造函数,静态内部类没有带全部参数构造函数,无法转化多了某某field属性等等。因此,在大多数开发的过程中,我们自然会在实体类对象上,一股脑加上 @Data,@NoArgsConstructor,@AllArgsConstru

2022-04-10 21:27:28 3125 4

原创 @EnableConfigurationProperties的使用方式以及作用

文章目录1. 结论2. 代码例子1. @ConfigurationProperties的使用2. @EnableConfigurationProperties的使用3. 为什么会有@EnableConfigurationProperties出现呢?1. 结论在@ConfigurationProperties的使用,把配置类的属性与yml配置文件绑定起来的时候,还需要加上@Component注解才能绑定并注入IOC容器中,若不加上@Component,则会无效。@EnableConfiguration

2022-04-10 13:00:00 2288 10

原创 Properties与ResourceBundle的基本使用以及区别

文章目录1. 区别2. 用法1. Properties解析文件2. ResourceBundle1. 区别Properties 用来解析普通属性文件ResourceBundle 通常用于解析国际化资源属性文件, 会根据本地环境自动选择对应的国际化资源2. 用法1. Properties解析文件先准备一个properties文件放在resource目录下:name=小明age=18public class demo2 { public static void main(St

2022-04-06 00:00:00 426

原创 SpringFactoriesLoader.loadFactories()与SpringFactoriesLoader.loadFactoryNames() 详细使用方式

文章目录1. 前言2. 基本使用3. 结合EnableAutoConfiguration的使用4. 详细源码解读1. 前言SpringFactoriesLoader类的主要作用是通过类路径下的META-INF/spring.factories文件获取工厂类接口的实现类,初始化并保存在缓存中,以供Springboot启动过程中各个阶段的调用。SpringFactoriesLoader.loadFactories():是根据参数factoryClass获取spring.factories下配置的所有实现

2022-04-05 20:58:13 1398

原创 Properties的遍历几种方式

文章目录1. 前言2. 正片1. keySet()方式2. entrySet()方式3. propertyNames()方式4. stringPropertyNames()方式1. 前言无意有次需求是遍历Properties对象,但突然就不知道怎么遍历了,因此写文章记录一下。2. 正片Properties 是键值对 存储的,key—value,因此遍历方式跟Map基本一致。1. keySet()方式public class demo { public static void ma

2022-04-05 18:30:00 1270

原创 StringJoiner拼接字符串(使用以及源码解析)

文章目录1. 介绍2. 代码演示3. 源码1. 成员变量2. 构造函数3. setEmptyValue()4. add()5. toString()6. merge()7. length()8. 再次详细解释toString(),跟length()方法1. 介绍StringJoiner类是jdk8推出的,用于构造由分隔符分隔的字符序列,并可选择性地从提供的前缀开始和以提供的后缀结尾。说的通俗一点:就是让字符串之间有分隔符或者字符串有前缀或者后缀,不用开发人员自己拼接。2. 代码演示public

2022-03-13 12:08:15 651

原创 List中的并集、交集、差集的使用(并阅读源码)

总结交集:两个list集合共同元素部分,retainAll()方法。差集:从A集合中获取B集合中,没有的元素。removeAll()方法。并集:将两个list集合并在一起,addAll()方法,但有可能出现重复元素,可以先removeAll(),去掉重复元素部分,再addAll()方法。代码演示:交集:retainAll()方法package com.example.demo.list;import lombok.*;import java.util.ArrayList;..

2022-03-06 20:04:09 1629

原创 java中判断一个对象是否是另一个的类的实例(instanceof关键字与isAssignableFrom()方法的区别)

文章目录1. 总结2. 代码演示1. isAssignableFrom()2. instanceof关键字1. 总结instanceof关键字:是实例维度的,一个对象是否为一个类的实例,即 子类实例对象 instanceof 关键字。A.isAssignableFrom(B)方法:是从class维度,一个类(A)是否是另一个类(B)指派的,即A是否是B的父类,即父类.class.isAssignableFrom(子类.class)2. 代码演示1. isAssignableFrom()pub

2022-03-02 23:25:55 1044

原创 SpringFactoriesLoader.loadFactories()与SpringFactoriesLoader.loadFactoryNames() 详细源码解读

文章目录1. 前言2. 源码解读1. SpringFactoriesLoader.loadFactoryNames()2. SpringFactoriesLoader.loadFactories()1. 前言SpringFactoriesLoader类的主要作用是通过类路径下的META-INF/spring.factories文件获取工厂类接口的实现类,初始化并保存在缓存中,以供Springboot启动过程中各个阶段的调用。SpringFactoriesLoader.loadFactories():

2022-03-01 23:15:46 735

原创 yml文件字符串、List、Map的书写方式并使用@ConfigurationProperties注入配置类

文章目录1. 常规例子2. 非常规例子(不建议)1. 常规例子先准备好一个配置类,如下:1. 使用@ConfigurationProperties 该类必须是个bean对象。2. 该类必须有setting方法,否则无法注入值。@Setter@Getter@Component@ConfigurationProperties(prefix = "test")public class TestConfig { // 字符串 private String userName;

2022-02-28 22:50:36 1141

原创 Map中compute()、computeIfPresent()、computeIfAbsent()、merge()的使用以及原理

文章目录1. 总结2. 代码例子以及源码解析:1. compute()2. computeIfPresent()3. computeIfAbsent()4.merge()1. 总结compute():无论key是否存在,都会执行后面方法。若后面方法返回newValue为NULL,则会从Map中remove(key),若返回newValue不为NULL,则put(key,newValue),简单一句话:newValue有值则插入更新,无值就删除该key。computeIfPresent(): 当key

2022-02-10 00:11:18 2108

原创 如何将java.util.Date 与 java.sql.Date、java.sql.Timestamp转化为 jdk1.8的LocalDate、LocalDateTime

文章目录0. 前言1. java.sql.Date 转化为 LocalDate2. java.sql.Timestamp 转化为 LocalDateTime3. java.util.Date 转化为 LocalDate1. 使用Instant类(时间戳)作为中介 转化为 LocalDate2. 使用java.sql.Date 作为中介 转化为 LocalDate4. java.util.Date 转化为 LocalDateTime0. 前言若对jdk8的时间操作还不了解的,可以先看这篇文章:http

2022-01-22 14:29:07 881

原创 十分详细的jdk8时间相关操作以及知识点(文章很长)

文章目录1. 前言2. 时间的创建1. now方法2. of方法3. 时间的加减(plus、minus)4. plus()使用Period类(一段时间)5. plus()方法使用ChronoUnit类(枚举类 时间单位)6. 直接修改时间(不是加减方式)(with方法)7. with()方法使用chronoField类(枚举类)8. with()方法配合使用调节器TemporalAdjuster9. with()使用自定义的调节器TemporalAdjuster10. 两个时间怎么比较大小以及求差值1.

2022-01-22 13:46:13 1132

原创 new HashMap() 与 Maps.newHashMap() 、Maps.newHashMapWithExpectedSize(int)的区别

文章目录1. 前提说明2. 区别0. 导入相关jar包1. Maps.newHashMap()2. Maps.newHashMapWithExpectedSize(int)3. Maps中其他方法1. Maps.filterKeys 过滤key 得到全新Map(Maps.filterEntries(),Maps.filterKeys()同理)2. Maps.difference(map,map) 比较两个map的内容1. 前提说明之前无疑中看见小组长使用了Maps.newHashMapWithExpe

2022-01-18 22:09:01 1234

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除