自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

努力改变人生!

加微信交流:398701344。

原创 SpringMVC之RequestMappingHandlerMapping(三)

我们在这篇文章中接着上一篇文章的内容接着说,我们在上一篇文章中说到在doWithMethods这个方法中会调用MethodCallback的doWith方法进行方法处理,那么我们在RequestMappingHandlerMapping中MethodCallback的实现是什么呢? Refl...

2019-09-04 01:31:25 265 0

原创 SpringMVC之RequestMappingHandlerMapping(二)

我们在上篇文章中大致说了一些和RequestMappingHandlerMapping相关的类,我们在这篇文章中重点分析下RequestMappingHandlerMapping这个类。从上篇的文章中我们看到,RequestMappingHandlerMapping这个类实现了和Bean的生命周期...

2019-08-30 01:36:03 358 1

原创 SpringMVC之RequestMappingHandlerMapping(一)开篇

这一段时间工作比较忙,自己也变得懒惰了一些,回头看看博客已经有半年多没有更新了。还是要让自己保持一颗不断学习的心的,就以SpringMVC的RequestMappingHandlerMapping的分析作为新的开始吧,本文所用的SpringMVC版本为5.1.5。我们在学习SpringMVC的时候...

2019-07-24 01:04:26 643 0

原创 SpringBoot之集成SpringAOP分析(续)

这里我们先对上一篇文章的内容做一个总结,原谅我再次贴一下AopAutoConfiguration 这个类的代码 @Configuration @ConditionalOnClass({ EnableAspectJAutoProxy.class, Aspect.class, Advice.class...

2018-12-16 22:10:54 318 0

原创 SpringBoot之集成SpringAOP分析

我们在之前的文章中简单的分析过SpringAOP和Spring的整合过程(Spring系列之Spring框架和SpringAOP集成过程分析(十)),我们在这篇文章中简单的分析一下SpringBoot整个SpringAOP的过程。 如果我们要在SpringBoot中使用SpringAOP我们需...

2018-09-02 23:52:28 747 0

原创 踩坑记:根据类型获取Spring容器中的Bean

在项目开发中遇到了这样的一个问题:有同事在BeanFactoryPostProcessor的实现方法中写了类似这样的一段代码: @Component public class BeanFactoryPostProcessorImpl implements BeanFactoryPostPro...

2018-09-01 23:34:12 5120 3

原创 Spring系列之Spring框架和SpringAOP集成过程分析(十二)

在这篇文章中我们接着上一篇的文章说。在上一篇文章中我们提到了getAdvicesAndAdvisorsForBean这个方法,这个方法的内容是为目标对象挑选合适的Advisor类,其源码如下: //targetSource 为null protected Object[] get...

2018-06-25 23:32:47 411 0

原创 Spring系列之Spring框架和SpringAOP集成过程分析(十一)

我们在这篇文章中来分析一下AnnotationAwareAspectJAutoProxyCreator这个类。

2018-06-23 16:07:35 438 0

原创 Spring系列之Spring框架和SpringAOP集成过程分析(十)

在开始这个系列之前大家先想一下我们是怎么在项目中使用SpringAOP的(这里的分析都是基于AspectJ注解的)。我们需要在我们的Spring配置文件中引入SpringAOP的命名空间和标签,然后定义切面Bean,进行AOP配置。大概如下所示: <?xml...

2018-06-18 16:59:24 609 0

原创 Spring系列之AOP分析之对通知方法的执行过程(九)

我们在上一篇文章中说到了前置通知的方法调用AspectJMethodBeforeAdvice#before,在这个before方法中又调用了invokeAdviceMethod这个方法,invokeAdviceMethod这个方法在AspectJMethodBeforeAdvice的父类Abstr...

2018-06-18 14:42:41 2092 0

原创 Spring系列之AOP分析之对目标对象的拦截过程(八)

我们在上一篇文章中简单的说了调用动态代理对象方法的过程,也说了AOP拦截器执行链的生成过程。我们接着说AOP对目标对象的拦截过程。下面的代码是我们要分析的重点: //proxy:生成的动态代理对象 //target:目标对象 //method:目标方法 //args:目标方法参数 //tar...

2018-05-08 23:23:02 3782 0

原创 Spring系列之AOP分析之对目标对象的拦截过程(七)

我们在上一篇文章中简单的说了一下SpringAOP使用JDK动态代理生成目标对象的过程,我们在这一篇文章中说一下SpringAOP对生成的动态代理对象的方法的拦截过程(即SpringAOP拦截过程),这个分析的过程可能会比较长。 在上一篇文章中我们说的使用JDK创建动态代理对象是用的JdkDyn...

2018-04-24 22:49:39 602 1

原创 Spring系列之AOP分析之代理对象的创建(六)

我们在之前的文章中说了Advisor的创建过程,Advice的创建过程以及为目标类挑选合适的Advisor的过程。通过之前的分析我们知道,SpringAOP将切面类中的通知方法都封装成了一个个的Advisor,这样就统一了拦截方法的调用过程。我们在这一篇文章中说一下SpringAOP中代理对象的创...

2018-04-19 23:39:50 2334 1

原创 Spring系列之AOP分析之为目标类挑选合适的Advisor(五)

我们在之前的文章中分析了Advisor的生成过程以及在Advisor中生成Advise的过程。在这一篇文章中我们说一下为目标类挑选合适的Advisor的过程。通过之前的分析我们知道,一个切面类可以生成多个Advisor(多个切面类的话那就更多多的Advisor了),这些Advisor是否都能适用于...

2018-03-29 00:05:41 947 0

原创 Spring系列之AOP分析之获取Advice的过程(四)

我们在前面的文章中分析了从切面类中获取Advisor的过程,我们最后创建的Advisor实例为:InstantiationModelAwarePointcutAdvisorImpl,它是一个Advisor和PointcutAdvisor的实现类,所以我们可以从这个类中获取Advice和Pointc...

2018-03-27 23:49:33 837 0

原创 Spring系列之AOP分析之获取Advisor的过程续(三)

我们在这一章中继续上一章的分析。我们在上一章中说到了获取到了切面类中所有不带@Pointcut注解的方法,我们看看Spring对我们获取到的这些方法进行了什么操作: for (Method method : getAdvisorMethods(aspectClass)) { //循环...

2018-03-27 22:59:09 552 0

原创 Spring系列之AOP分析之获取Advisor的过程(三)

我们在这篇文章中接着上一篇文章的分析。我们在上一篇文章中分析了创建AspectJProxyFactory,并向AspectJProxyFactory中添加目标对象和获取目标对象的过程。我们在这一篇文章中分析调用addAspect方法添加切面的过程。 在AspectJProxyFactory中有两...

2018-03-25 22:10:31 1519 0

原创 Spring系列之AOP分析(二)

终于要正式开始SpringAOP的分析工作了,在这之前先问个问题:关于AOP你认为最重要的是哪几个地方?我觉得有这样几个地方(理解的不对的地方欢迎指出):一个是AOP的配置(拦截规则的配置),一个是代理对象的创建,一个是统一的拦截调用过程。关于AOP的配置Spring是自己定义了一套规则同时集成了...

2018-03-21 23:21:14 803 0

原创 Spring系列之AOP分析开篇(一)

在开始Spring的AOP分析之前,先来看一个很老的一个问题。。。假设你在开发的过程中,需要在类A中的方法之前执行一些逻辑(我们称为逻辑A),你可能的一个做法是直接修改类A中的方法,在类A中的方法的开始处写上要添加的代码,你还可能会给类A生成一个代理类,去对调用方法进行拦截,在代理类里面去执行相应...

2018-03-18 22:49:36 806 0

原创 Spring系列之AOP基本主要类概述

在这篇文章中我将对自己了解的AOP中的基本主要类做一个概述,可能不包括一些AOP高级用法的类以及是自己还不了解的类。会不定期的进行补充和修改。 SpringAOP基础解析类 类名 作用概述 AopNamespaceHandler AOP命名空间解析类。我们在用AOP...

2018-03-18 18:45:41 1319 0

原创 Spring系列之FactoryBean(二)

我们在上一篇文章中说了一下FactoryBean类型的Bean的getObjectType方法被使用到的一个地方,我们在这一篇文章中会说一下FactoryBean是怎么让Spring容器管理调用它的getObject所生成的Bean的。在这篇文章中我们从getBean方法开始说起(我们这里还是要说...

2018-03-17 00:21:33 1099 2

原创 Spring系列之FactoryBean(一)

在我们的开发工作中应该都见过或使用过FactoryBean这个类,也许你会看成了BeanFactory这个类。FactoryBean和BeanFactory虽然长的很像,但是他们的作用确实完全不像。这里你可以想象一下,你会在什么样的场景下使用FactoryBean这个接口?FactoryBean是...

2018-03-15 23:39:51 25336 9

原创 IDEA使用小技巧

这篇文章用来记录一下自己在使用IDEA中的小技巧,会不断更新。 debug小技巧 在我们开发过程中,免不了要对源代码进行debug。在debug的过程中可能会遇到这样的一种场景:需要去debug一个循环代码中的一段逻辑,而这个循环又比较多,一个一个的去debug就会很费劲,有没有什么方式可以跳...

2018-03-11 18:12:04 656 0

原创 SpringBoot之@EnableConfigurationProperties分析

我们在用SpringBoot进行项目开发的时候,基本上都使用过@ConfigurationProperties这个注解,我们在之前的文章中也说过ConfigurationPropertiesBindingPostProcessor会对标注@ConfigurationProperties注解的Bea...

2018-01-28 00:43:39 56476 17

原创 SpringBoot之浅析TomCat端口号设置

我们在之前的文章中说过怎么去修改TomCat的端口号(SpringBoot修改默认端口号),我们在这篇文章中简单的说一下SpringBoot是怎么实现修改TomCat端口号的。 修改TomCat的端口号大概可以分为这样的两类吧,一种是用配置项的方式,另一种是用程序实现的方式。配置项包含:设置命令...

2018-01-16 23:54:08 15080 2

原创 SpringBoot之浅析配置项解析(五)

在上一篇文章的结尾处我们简单的说了一下PropertiesConfigurationFactory中的bindPropertiesToTarget这个方法的内容,在这个方法中有这样的一段代码: //获取PropertyValues 重点要分析的 PropertyValues propertyVal...

2018-01-15 22:25:20 1075 0

原创 SpringBoot之浅析配置项解析(四)

我们在之前的文章中简单的说了一下SpringBoot对于默认的配置文件的解析过程,在这一篇文章中我们再简单的分析一下SpringBoot是怎么将解析到的配置属性信息设置到相应的Bean上的。既然是用SpringBoot的属性配置方式,那么我们在这里会在对应的类上加上ConfigurationPro...

2018-01-14 19:19:07 1696 0

原创 SpringBoot之浅析配置项解析(三)

我们接着上一篇的文章继续分析。我们来看这一段代码: //在上一篇文章中我们分析了getSearchNames()这个方法,这个方法默认返回 只有一个元素 application的List for (String name : getSearchNames()) { //我们分析的重...

2018-01-10 22:10:52 1356 0

原创 SpringBoot之浅析配置项解析(二)

我们在上一篇文章中简单的说了一些SpringBoot配置属性相关的一些内容,我们在这篇文章中接着上一篇的文章继续进行分析。我们在上一篇文章中提到了这样一个类:ConfigFileApplicationListener,从类名来看的话这是一个配置文件应用监听器,这个类主要的一个作用是在 refres...

2018-01-08 22:11:55 524 0

原创 SpringBoot之浅析配置项解析(一)

在我们的开发工作总是离不了配置项相关的配置工作,SpringBoot也为我们提供了@ConfigurationProperties注解来进行配置项信息的配置工作,同时也提供了几个配置文件的默认加载位置,如:classpath:application.properties、classpath:app...

2018-01-07 15:39:22 1707 0

原创 SpringBoot启动流程简析(四)

在我们之前的web开发中,通常都是将应用打成war包或者将编译之后的应用放到tomcat的webapps目录下(其他的web服务器放到相应的目录下),但是我们在用SpringBoot进行web开发的时候,只是启动了一个main类,然后就会神奇的发现tomcat竟然也被启动了(SpringBoot也...

2017-12-25 21:37:56 1010 0

原创 SpringBoot启动流程简析(三)

我们在上一节中说了SpringBoot的应用上下文的对象是AnnotationConfigEmbeddedWebApplicationContext,通过名字直译就是注解配置的可嵌入的web应用上下文。我们对它先不做过多的介绍,在不远的文章中我们就会对它进行一下简单的分析。 //上下文的一些...

2017-12-20 23:00:54 842 0

原创 SpringBoot启动流程简析(二)

在这篇文章中,我们接着上一篇的内容接着分析。 public ConfigurableApplicationContext run(String... args) { //启动应用的检测 StopWatch stopWatch = new StopWatch()...

2017-12-19 23:55:20 881 0

原创 SpringBoot启动流程简析(一)

我想很多人已经在项目中使用SpringBoot做项目开发的工作了,创建SpringBoot和启动SpringBoot应用都会较简单一点,下面我以SpringBoot官网上的Demo来简单的分析一些SpringBoot的启动流程,我们的启动主类代码如下:@SpringBootApplication ...

2017-12-13 21:11:31 9638 0

原创 SpringMVC之分析HandlerMethodReturnValueHandler(二)

我们在之前的文章中对HandlerMethodReturnValueHandler进行了简单的分析(SpringMVC之分析HandlerMethodReturnValueHandler(一)), 在 这篇文章中我们继续分析一下HandlerMethodReturnValueHandler这个...

2017-11-20 23:58:08 847 3

原创 JDK1.8新特性值Optional

在我们的开发中,NullPointerException可谓是随时随处可见,为了避免空指针异常,我们常常需要进行一 些防御式的检查,所以在代码中常常可见if(obj != null) 这样的判断。幸好在JDK1.8中,java为我们提供了 一个Optional类,Optional类能让我们省掉...

2017-11-20 23:19:36 19440 4

原创 SpringBoot源码分析之CommandLineRunner、ApplicationRunner

我们在之前的文章中简单的说过SpringBoot的CommandLineRunner和ApplicationRunner这两个接口 SpringBoot之CommandLineRunner接口和ApplicationRunner接口,这篇文章中我们从源码上简单的分析一下这两个 接口。在org....

2017-11-19 23:12:32 1427 0

原创 SpringBoot特性之Actuator

SpringBoot自动配置的特性,很大程度上解放了我们繁琐的配置的工作,但是也向我们屏蔽了很多内部运行 的细节,好在SpringBoot为我们提供了Actuator,Actuator在应用程序里提供了众多的Web端点,通过它 们,我们可以了解应用程序运行时的内部状况。我们可以了解Bean的组...

2017-11-19 20:48:21 702 0

原创 使用线程池导出Excel数据

之前同事在做一个功能的时候,需要导出一些数据,但是组装数据量的过程比较麻烦一点,所以这里给了一个建议看看能不能使用多线程的方法来进行处理。顺便写了两个demo,一种方式是批量分段去往一个sheet页中写入数据,另一种方式是往多个sheet也中写入数据。demo如下: 批量分段导出数据packa...

2017-11-18 23:23:40 3613 0

原创 SpringMVC之分析HandlerMethodReturnValueHandler(一)

我们在用SpringMVC做web开发的时候,有时候处理完一个请求之后会返回一个页面,有时候会返回一个字符串,有时候会返回一个json对象。通过分析源码我们知道在调用请求处理器映射方法的时候走的是同一段代码,如下: org.springframework.web.method.support.In...

2017-11-07 21:46:47 1361 0

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