自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RequestMapping的加载过程

注册过程的具体实现主要在RequestMappingHandlerMapping类中, 该类实现了InilizationBean接口中的afterPropertiesSet()接口, 调用其父类的该方法实现中完成加载.@RequestMapping可以声明类和方法对应的URL路径, 这些对应关系被注册在HandlerMapping中, 本文通过源码分析注册过程。processCandidateBean()中对候选进行筛选, 并检测其所有方法。最终被注册到一个map中, key->value如下。

2023-07-06 12:01:47 76 1

原创 Java线程池之:如何回收临时线程

首先是runWroker()部分,worker是线程池中事实上的线程,runWorker()方法是worker工作的核心方法,该方法会循环尝试从阻塞队列获取任务并执行,getTask()方法尝试从阻塞队列中获取任务,当满足回收条件(超时 && 超过核心线程数),会退出循环,执行线程回收工作.否则, poll()方法会在超过限定时间后返回null, 触发判断机制, 此时如果工作线程数大于核心线程数, 就会返回null, 在runWroker()方法中回收工作线程.

2023-07-03 21:13:17 371 1

原创 Java8新特性之Stream

流是一个顺序的数据管道,流的使用包括创建、操作和终止三部分,终止后流就不可再访问。

2023-06-30 18:56:23 79

原创 Java8新特性之:Lambda表达式

Lambda表达式的实质是一个匿名函数,其依赖于一个接口,这个接口只能有一个抽象方法,可以有静态方法和默认方法。该注解表示当前接口是一个函数式接口,只能有一个抽象方法,可以有有静态方法和默认方法。当匿名函数与其他类的方法相同时,可以直接引用其他类的方法。Lambda表达式语法:(参数列表) -> {方法体}4.单条语句,语句为return,可以省略return。3.单条语句,可以省略方法体的{}2.单个参数,可以省略参数的()1.参数列表的数据类型可以省略。1.引用类的普通方法。2.引用类的静态方法。

2023-06-29 18:38:17 40 1

原创 嵌套查询与嵌套结果

嵌套查询是指在查询过程中,嵌套其他查询语句进行相关属性的查询,可以用于ResultMap的collection、asscoiation等属性中。下述测试案例中,在查询student的同时,通过嵌套查询获得了学生上过的学校。结果:Student(id=1, schoolList=[School(id=1, name=a), School(id=2, name=b)])

2023-06-28 20:13:17 151 1

原创 ResultMap和ResultType

ResultMap用于多表查询时,指定各表的查询结果与返回类型各字段之间的匹配关系。测试代码结果:Student(name=test_student, schoolId=1, school=School(id=1, name=test_school))

2023-06-28 19:34:24 30 1

原创 try、catch和finally

finally中是无论是否发生异常都会执行的语句,优先级甚至高于return语句,即无论try/catch中是否含有return语句,都一定会执行finally中的语句。如果finally语句中有return语句,则执行finally中的return语句,否则,先执行finally中的语句,再执行try/catch中的return。

2023-06-19 16:49:49 38

原创 Spring事务的底层原理

事务的同步状态通过接口TransactionSynchronization 进行管理抽象类TransactionSynchronizationManager 负责管理事务与线程的绑定关系事务的执行流程事务的挂起AbstractPlatformTransactionManager.suspend(),大致做了以下几件事事务的恢复 AbstractPlatformTransactionManager.resume(),大致做了以下几件事。

2023-06-17 20:33:53 65 1

原创 Spring之AOP的底层原理

本文通过阅读Spring的源码,学习AOP的底层实现

2023-06-16 20:11:45 37 1

原创 Spring的循环引用

此时如果产生循环依赖,会再次进入缓存查找过程,此时会找到缓存的A的工厂,根据工厂生产未完成的A,加入二级缓存,删除三级缓存中的A工厂,并返回未完成的A。Spring中包含三级缓存,这三级缓存在DefaultSingletonBeanRegistry中,是三个以BeanName为key的map。循环引用即A-B-A引用问题,关键在于如何解决创建A需要B,创建B需要A的问题,Spring中采用暴露未完成的Bean的方法实现循环引用。tips:该方法并不能解决所有的循环引用问题,如构造器内的循环应用就无法解决。

2023-06-16 15:31:42 91 1

原创 通过@ComponetScan注解加载Bean

在parse方法中扫描获取BeanDefinition,该方法中首先定义了一个scanner,然后获取@ComponetScan注解的相关属性,为Scanner进行配置,包括useDefaultFilters、basePackages、includeFilters和excludeFilters等,最后调用scanner.doScan()方法。Scanner的doScan方法,获取BeanDefinition,并将其与beanname和别名组装成BeanDefinitionHolder返回。

2023-06-14 15:35:46 185

空空如也

空空如也

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

TA关注的人

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