自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Spring】Spring Bean生命周期

扫描,例如:处理配置类时,构建了一个扫描指定的路径,将扫描到的符合条件的类加载为。

2025-04-10 20:08:08 158

原创 【Spring】Spring容器启动流程

通过的方式来启动Spring容器,这个启动流程具体做了哪些事?

2025-04-10 17:32:21 849

原创 【Spring-Mybatis】SpringBoot中Mybatis自动装配流程

继承了,主要功能也跟ClassPathBeanDefinitionScanner类似(如果不太清楚可以看【Spring扫描类过程】@ComponentScan注解的实现),该类重写了doScan方法,在调用了父类的doScan方法后,做了额外处理} else {此处,将扫描出的BeanDefinition的BeanClass全部设置为意为:举例UserMapper会被MapperFactoryBean的getObject方法生产出来,对FactoryBean不了解的可以看// 省略……

2024-10-21 11:31:20 1321

原创 【Spring扫描类过程】@ComponentScan注解的实现

众所周知,要启动一个SpringBoot应用程序,只需要(案例来自SpringBoot官网)或者,省略路径,如果省略的话,则默认取值启动类所在路径;那么,Spring是如何对路径做处理并扫描呢?实际上,Spring会对ComponentScan注解做处理来控制扫描的范围。我们点开注解,可以看到scanBasePackages属性被映射到@ComponentScan中的basePackages属性上。

2024-10-08 17:20:17 725

原创 项目中接入traceId跟踪请求全流程日志

不知道现在还有多少小伙伴在通过日志查问题时,还是通过肉眼观察的?通过引入traceId可以很方便的一次性查找一个链路的所有日志,可以理解为:为每个请求生成了一个唯一id。

2024-09-25 16:30:02 633

原创 Mybatis执行流程源码分析

那么,这一段代码是Mybatis是如何执行,如何获取到SqlSessionFactory,如何获取到Mapper,又是如何执行Sql呢?方法依次对xml中的各节点进行解析,实质是将各个节点的信息解析成对应的配置类,全都放到Configuration类中(存放所有配置信息)

2024-09-23 15:41:57 1502

原创 【踩坑】File.mkdirs可能返回false

排查后发现,是mkdirs方法创建文件夹失败了,创建失败时不会有异常抛出,只是会返回false。这段代码在本地和测试环境调试都没有问题,但是上到生产后直接报错了,在写入文件时报了文件不存在。我遇到的情况就是权限不足,程序的启动用户并没有该文件夹的写权限,需要注意的是。当创建文件夹失败时,抛出异常,给到前端提示。

2024-09-09 15:17:58 713

原创 【Spring-RabbitMq】设置消费重试次数

在我们实际项目中需要对消息消费的高可用做保证,首先需要做到的就是消息的重试机制,设想一下以下场景:当库存服务处理上游服务发过来的订单消息时,此时服务宕机了,或者网络不可用了,那我这个消息是应该算消费成功还是消费失败呢?显然,我们肯定要对处理不成功的消息进行重试,那么如果消费不成功的话,就要无限次数的重试吗?答案是否,因为当代码逻辑有Bug或者上游的消息内容是错误的时候,无论再重试多少次也不会成功,此时应该将消息抛弃掉。所以消费的最佳实践那么该如何实现这个功能呢?。

2024-08-10 17:53:00 1374

原创 Spring-RabbitMq配置一个消费端接入多个vhost

CachingConnectionFactory的作用是管理消费端与mq建立的连接,我们上面说的containerFacory也是基于此的基础来实现的。我们要连接不同账号的VHost,那么就需要设置不同的CachingConnectionFactory。如下,往容器中分别注入B系统和C系统的CachingConnectionFactory,我们分别针对A系统和B系统单独设置了VHost,address,账号,密码参数。/*** rabbitMQ配置*/@Slf4j@Autowired。

2024-08-10 17:13:12 845

原创 JPA Hibernate直接执行sql 转换成dto AliasToEntityMapResultTransformer

find方法视图强烈不推荐这种方式用的比较多,当查询比较复杂的情况时,例如连表查询,此时注入EntityManager,通过EntityManager执行sql,返回的是List类型,手动转成dto这种方法简直是原始人,需要处理Object数组,容易数组下标越界不说,还有大量类型转换的代码,一不小心就空指针。强烈不推荐。

2024-08-07 21:08:36 1175

原创 基于EasyExcel实现导入数据校验,生成错误信息Excel

导入的第一步就是处理字段类型错误,因为如果出现类型转换错误,会直接导致程序异常,这里通过try,catch捕获ExcelAnalysisException异常来获取出现错误的列和行。基于EasyExcel封装,由于项目中本身使用的EasyExcel,考虑到不改动项目的技术组成,还是基于EasyExcel开发。EasyExcel做的工作其实很简单,就是把文件中的内容映射到我们实体类的字段上,我们要做的就是在映射前和映射后做校验。而我们需要将数据的错误内容提交给用户,所以如下的报错是不可取的。

2024-07-30 17:33:09 3788 14

原创 java爬虫实例-jsoup爬取豆瓣电影

这样所有的电影url就全部获取到了,下面只需要将爬取每一个url中的信息。这样防止被服务器当做恶意请求拒绝访问。

2024-07-30 09:30:21 955 1

原创 Spring - FactoryBean

尝试从缓存中取对象(思考一下也比较合理,因为factoryBean同样可以被定义为单例,自然应该有对应的缓存池),当我们首次获取时是没有值的,所以继续往下走。先判断了beanName是否是以&开头,如果是以&开头,直接将前面从对象池中获取到的Bean返回,所以直接从此返回了FactoryBean对象。可以看到,成功创建了User对象,并从容器中可以根据BeanFactory的名称获取到生产的Bean。这与我们一般getBean的结果不太一样,一般我们根据beanName获取到的是Bean本身,让我们接。

2024-07-29 23:09:17 537

空空如也

空空如也

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

TA关注的人

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