- 博客(162)
- 资源 (26)
- 收藏
- 关注
原创 自定义SpringSecurity授权跳转地址
自定义SpringSecurity授权跳转地址在我们用SpringSecurity+Oauth2做权限验证和访问控制的时候,如果要访问的请求处于未登录状态,会被框架进行拦截,并重定向到一个/login的请求(1),再重定向我们授权服务器的/oauth/authorize请求(这里是使用的授权码模式),接着再重定向到我们授权服务器的/login请求上,即我们授权服务器的登录页面。在工作中遇到了一个要修改(1)这个地方请求的问题。既然要修改(1)的/login请求,我们首先要弄清楚这里的/login是从哪里来
2021-02-26 00:58:12
2923
原创 SpringMVC之RequestMappingHandlerMapping(三)
我们在这篇文章中接着上一篇文章的内容接着说,我们在上一篇文章中说到在doWithMethods这个方法中会调用MethodCallback的doWith方法进行方法处理,那么我们在RequestMappingHandlerMapping中MethodCallback的实现是什么呢? ReflectionUtils.doWithMethods(currentHandlerType, /...
2019-09-04 01:31:25
1442
原创 SpringMVC之RequestMappingHandlerMapping(二)
我们在上篇文章中大致说了一些和RequestMappingHandlerMapping相关的类,我们在这篇文章中重点分析下RequestMappingHandlerMapping这个类。从上篇的文章中我们看到,RequestMappingHandlerMapping这个类实现了和Bean的生命周期相关的一些接口(关于Bean的生命周期可以参考之前写的小文章:Spring Bean的生命周期小析(一...
2019-08-30 01:36:03
1489
原创 SpringMVC之RequestMappingHandlerMapping(一)开篇
这一段时间工作比较忙,自己也变得懒惰了一些,回头看看博客已经有半年多没有更新了。还是要让自己保持一颗不断学习的心的,就以SpringMVC的RequestMappingHandlerMapping的分析作为新的开始吧,本文所用的SpringMVC版本为5.1.5。我们在学习SpringMVC的时候,RequestMappingHandlerMapping和RequestMappingHandler...
2019-07-24 01:04:26
2637
原创 SpringBoot之集成SpringAOP分析(续)
这里我们先对上一篇文章的内容做一个总结,原谅我再次贴一下AopAutoConfiguration 这个类的代码@Configuration@ConditionalOnClass({ EnableAspectJAutoProxy.class, Aspect.class, Advice.class, AnnotatedElement.class })@ConditionalOnPropert...
2018-12-16 22:10:54
690
原创 SpringBoot之集成SpringAOP分析
我们在之前的文章中简单的分析过SpringAOP和Spring的整合过程(Spring系列之Spring框架和SpringAOP集成过程分析(十)),我们在这篇文章中简单的分析一下SpringBoot整个SpringAOP的过程。 如果我们要在SpringBoot中使用SpringAOP我们需要哪些准备步骤呢?就一步:在你的应用中引入SpringBoot提供的aop-starter即可: ...
2018-09-02 23:52:28
1405
原创 踩坑记:根据类型获取Spring容器中的Bean
在项目开发中遇到了这样的一个问题:有同事在BeanFactoryPostProcessor的实现方法中写了类似这样的一段代码:@Componentpublic class BeanFactoryPostProcessorImpl implements BeanFactoryPostProcessor { @Override public void postProcess...
2018-09-01 23:34:12
9699
4
原创 Spring系列之Spring框架和SpringAOP集成过程分析(十二)
在这篇文章中我们接着上一篇的文章说。在上一篇文章中我们提到了getAdvicesAndAdvisorsForBean这个方法,这个方法的内容是为目标对象挑选合适的Advisor类,其源码如下: //targetSource 为null protected Object[] getAdvicesAndAdvisorsForBean(Class<?> beanClass,...
2018-06-25 23:32:47
739
1
原创 Spring系列之Spring框架和SpringAOP集成过程分析(十一)
我们在这篇文章中来分析一下AnnotationAwareAspectJAutoProxyCreator这个类。
2018-06-23 16:07:35
836
原创 Spring系列之Spring框架和SpringAOP集成过程分析(十)
在开始这个系列之前大家先想一下我们是怎么在项目中使用SpringAOP的(这里的分析都是基于AspectJ注解的)。我们需要在我们的Spring配置文件中引入SpringAOP的命名空间和标签,然后定义切面Bean,进行AOP配置。大概如下所示:<?xml version="1.0" encoding="UTF-8"?&am
2018-06-18 16:59:24
1222
原创 Spring系列之AOP分析之对通知方法的执行过程(九)
我们在上一篇文章中说到了前置通知的方法调用AspectJMethodBeforeAdvice#before,在这个before方法中又调用了invokeAdviceMethod这个方法,invokeAdviceMethod这个方法在AspectJMethodBeforeAdvice的父类AbstractAspectJAdvice中。AbstractAspectJAdvice这个是Aspect的所有...
2018-06-18 14:42:41
4170
原创 Spring系列之AOP分析之对目标对象的拦截过程(八)
我们在上一篇文章中简单的说了调用动态代理对象方法的过程,也说了AOP拦截器执行链的生成过程。我们接着说AOP对目标对象的拦截过程。下面的代码是我们要分析的重点://proxy:生成的动态代理对象//target:目标对象//method:目标方法//args:目标方法参数//targetClass:目标类对象//chain: AOP拦截器执行链 是一个MethodInterce...
2018-05-08 23:23:02
7272
1
原创 Spring系列之AOP分析之对目标对象的拦截过程(七)
我们在上一篇文章中简单的说了一下SpringAOP使用JDK动态代理生成目标对象的过程,我们在这一篇文章中说一下SpringAOP对生成的动态代理对象的方法的拦截过程(即SpringAOP拦截过程),这个分析的过程可能会比较长。 在上一篇文章中我们说的使用JDK创建动态代理对象是用的JdkDynamicAopProxy这个类,这个类同时实现了InvocationHandler这个接口,实现了它的...
2018-04-24 22:49:39
1402
1
原创 Spring系列之AOP分析之代理对象的创建(六)
我们在之前的文章中说了Advisor的创建过程,Advice的创建过程以及为目标类挑选合适的Advisor的过程。通过之前的分析我们知道,SpringAOP将切面类中的通知方法都封装成了一个个的Advisor,这样就统一了拦截方法的调用过程。我们在这一篇文章中说一下SpringAOP中代理对象的创建过程。先看下面的一张图: 在SpringAOP中提供了两种创建代理对象的方式,一种是JDK自带...
2018-04-19 23:39:50
4407
1
原创 Spring系列之AOP分析之为目标类挑选合适的Advisor(五)
我们在之前的文章中分析了Advisor的生成过程以及在Advisor中生成Advise的过程。在这一篇文章中我们说一下为目标类挑选合适的Advisor的过程。通过之前的分析我们知道,一个切面类可以生成多个Advisor(多个切面类的话那就更多多的Advisor了),这些Advisor是否都能适用于我们的目标类呢?这就需要通过Advisor中所拥有的Pointcut来进行判断了。先回到我们最开始的例...
2018-03-29 00:05:41
2105
原创 Spring系列之AOP分析之获取Advice的过程(四)
我们在前面的文章中分析了从切面类中获取Advisor的过程,我们最后创建的Advisor实例为:InstantiationModelAwarePointcutAdvisorImpl,它是一个Advisor和PointcutAdvisor的实现类,所以我们可以从这个类中获取Advice和Pointcut。从之前的分析中我们也看到了Pointcut的赋值,在这一篇文章中我们将会具体分析Advice的创...
2018-03-27 23:49:33
2023
原创 Spring系列之AOP分析之获取Advisor的过程续(三)
我们在这一章中继续上一章的分析。我们在上一章中说到了获取到了切面类中所有不带@Pointcut注解的方法,我们看看Spring对我们获取到的这些方法进行了什么操作:for (Method method : getAdvisorMethods(aspectClass)) { //循环切面中所有不带@Pointcut注解的方法。 //method 切面中不带@Pointcut...
2018-03-27 22:59:09
1216
原创 Spring系列之AOP分析之获取Advisor的过程(三)
我们在这篇文章中接着上一篇文章的分析。我们在上一篇文章中分析了创建AspectJProxyFactory,并向AspectJProxyFactory中添加目标对象和获取目标对象的过程。我们在这一篇文章中分析调用addAspect方法添加切面的过程。 在AspectJProxyFactory中有两个addAspect重载方法,一个入参是切面实例对象,一个入参是切面类对象。他们两个的区别是:传入实例...
2018-03-25 22:10:31
3046
原创 Spring系列之AOP分析(二)
终于要正式开始SpringAOP的分析工作了,在这之前先问个问题:关于AOP你认为最重要的是哪几个地方?我觉得有这样几个地方(理解的不对的地方欢迎指出):一个是AOP的配置(拦截规则的配置),一个是代理对象的创建,一个是统一的拦截调用过程。关于AOP的配置Spring是自己定义了一套规则同时集成了AspectJ的语法,抽象为了Pointcut类。代理对象的创建,SpringAOP定义了一个工厂类A...
2018-03-21 23:21:14
1516
原创 Spring系列之AOP分析开篇(一)
在开始Spring的AOP分析之前,先来看一个很老的一个问题。。。假设你在开发的过程中,需要在类A中的方法之前执行一些逻辑(我们称为逻辑A),你可能的一个做法是直接修改类A中的方法,在类A中的方法的开始处写上要添加的代码,你还可能会给类A生成一个代理类,去对调用方法进行拦截,在代理类里面去执行相应的逻辑(逻辑A)。直接修改类A中的方法一般是我们不推荐的方式(存在改动量大、不易扩展等问题),我们通常...
2018-03-18 22:49:36
1416
1
原创 Spring系列之AOP基本主要类概述
在这篇文章中我将对自己了解的AOP中的基本主要类做一个概述,可能不包括一些AOP高级用法的类以及是自己还不了解的类。会不定期的进行补充和修改。SpringAOP基础解析类 类名 作用概述 AopNamespaceHandler AOP命名空间解析类。我们在用AOP的时候,会在Spring配置文件的beans标签中引入:xmlns:aop AspectJAu...
2018-03-18 18:45:41
2408
原创 Spring系列之FactoryBean(二)
我们在上一篇文章中说了一下FactoryBean类型的Bean的getObjectType方法被使用到的一个地方,我们在这一篇文章中会说一下FactoryBean是怎么让Spring容器管理调用它的getObject所生成的Bean的。在这篇文章中我们从getBean方法开始说起(我们这里还是要说一下我们现在的beanName的值为:factoryBeanLearn,Class类型为:Factor...
2018-03-17 00:21:33
3544
3
原创 Spring系列之FactoryBean(一)
在我们的开发工作中应该都见过或使用过FactoryBean这个类,也许你会看成了BeanFactory这个类。FactoryBean和BeanFactory虽然长的很像,但是他们的作用确实完全不像。这里你可以想象一下,你会在什么样的场景下使用FactoryBean这个接口?FactoryBean是一个工厂Bean,可以生成某一个类型Bean实例,它最大的一个作用是:可以让我们自定义Bean的创建过...
2018-03-15 23:39:51
91154
37
原创 IDEA使用小技巧
这篇文章用来记录一下自己在使用IDEA中的小技巧,会不断更新。debug小技巧在我们开发过程中,免不了要对源代码进行debug。在debug的过程中可能会遇到这样的一种场景:需要去debug一个循环代码中的一段逻辑,而这个循环又比较多,一个一个的去debug就会很费劲,有没有什么方式可以跳过不想要的循环条件,一步到位直击我们的目标呢?答案是肯定的下面我们来演示一下怎么在IDEA中跳不过不想...
2018-03-11 18:12:04
987
原创 SpringBoot之@EnableConfigurationProperties分析
我们在用SpringBoot进行项目开发的时候,基本上都使用过@ConfigurationProperties这个注解,我们在之前的文章中也说过ConfigurationPropertiesBindingPostProcessor会对标注@ConfigurationProperties注解的Bean进行属性值的配置,但是我们之前没有说ConfigurationPropertiesBindingPo
2018-01-28 00:43:39
119372
20
原创 SpringBoot之浅析TomCat端口号设置
我们在之前的文章中说过怎么去修改TomCat的端口号(SpringBoot修改默认端口号),我们在这篇文章中简单的说一下SpringBoot是怎么实现修改TomCat端口号的。 修改TomCat的端口号大概可以分为这样的两类吧,一种是用配置项的方式,另一种是用程序实现的方式。配置项包含:设置命令行参数、系统参数、虚拟机参数、SpringBoot默认的application.properties(
2018-01-16 23:54:08
21895
4
原创 SpringBoot之浅析配置项解析(五)
在上一篇文章的结尾处我们简单的说了一下PropertiesConfigurationFactory中的bindPropertiesToTarget这个方法的内容,在这个方法中有这样的一段代码: //获取PropertyValues 重点要分析的PropertyValues propertyValues = getPropertySourcesPropertyValues(names,relaxed
2018-01-15 22:25:20
1824
原创 SpringBoot之浅析配置项解析(四)
我们在之前的文章中简单的说了一下SpringBoot对于默认的配置文件的解析过程,在这一篇文章中我们再简单的分析一下SpringBoot是怎么将解析到的配置属性信息设置到相应的Bean上的。既然是用SpringBoot的属性配置方式,那么我们在这里会在对应的类上加上ConfigurationProperties和Component(或是和Component相同功能的)注解。我们定义的Bean如下:@
2018-01-14 19:19:07
2528
原创 SpringBoot之浅析配置项解析(三)
我们接着上一篇的文章继续分析。我们来看这一段代码://在上一篇文章中我们分析了getSearchNames()这个方法,这个方法默认返回 只有一个元素 application的List for (String name : getSearchNames()) { //我们分析的重点 profile 为null load(location, name, profile);
2018-01-10 22:10:52
2818
原创 SpringBoot之浅析配置项解析(二)
我们在上一篇文章中简单的说了一些SpringBoot配置属性相关的一些内容,我们在这篇文章中接着上一篇的文章继续进行分析。我们在上一篇文章中提到了这样一个类:ConfigFileApplicationListener,从类名来看的话这是一个配置文件应用监听器,这个类主要的一个作用是在 refresh context之前解析默认的配置文件。首先我们来看一下它的UML类图: ConfigFile
2018-01-08 22:11:55
947
原创 SpringBoot之浅析配置项解析(一)
在我们的开发工作总是离不了配置项相关的配置工作,SpringBoot也为我们提供了@ConfigurationProperties注解来进行配置项信息的配置工作,同时也提供了几个配置文件的默认加载位置,如:classpath:application.properties、classpath:application.yml、classpath:application.yaml、classpath:/
2018-01-07 15:39:22
3464
原创 SpringBoot启动流程简析(四)
在我们之前的web开发中,通常都是将应用打成war包或者将编译之后的应用放到tomcat的webapps目录下(其他的web服务器放到相应的目录下),但是我们在用SpringBoot进行web开发的时候,只是启动了一个main类,然后就会神奇的发现tomcat竟然也被启动了(SpringBoot也内置了Jetty),SpringBoot是怎么做到的呢?下面我将慢慢揭开它的神秘面纱: 我们之前说过在
2017-12-25 21:37:56
1568
1
原创 SpringBoot启动流程简析(三)
我们在上一节中说了SpringBoot的应用上下文的对象是AnnotationConfigEmbeddedWebApplicationContext,通过名字直译就是注解配置的可嵌入的web应用上下文。我们对它先不做过多的介绍,在不远的文章中我们就会对它进行一下简单的分析。//上下文的一些准备动作prepareContext(context, environment, listeners
2017-12-20 23:00:54
1251
1
原创 SpringBoot启动流程简析(二)
在这篇文章中,我们接着上一篇的内容接着分析。 public ConfigurableApplicationContext run(String... args) { //启动应用的检测 StopWatch stopWatch = new StopWatch(); stopWatch.start(); //SpringBoot的上下
2017-12-19 23:55:20
1344
1
原创 SpringBoot启动流程简析(一)
我想很多人已经在项目中使用SpringBoot做项目开发的工作了,创建SpringBoot和启动SpringBoot应用都会较简单一点,下面我以SpringBoot官网上的Demo来简单的分析一些SpringBoot的启动流程,我们的启动主类代码如下:@SpringBootApplicationpublic class SpringBootAnalysisApplication { publ
2017-12-13 21:11:31
13691
2
原创 SpringMVC之分析HandlerMethodReturnValueHandler(二)
我们在之前的文章中对HandlerMethodReturnValueHandler进行了简单的分析(SpringMVC之分析HandlerMethodReturnValueHandler(一)), 在 这篇文章中我们继续分析一下HandlerMethodReturnValueHandler这个类。有时候我们的请求映射处理方 法的返回值是View对象,当返回值是View对象时,会被ViewMet
2017-11-20 23:58:08
1582
3
原创 JDK1.8新特性值Optional
在我们的开发中,NullPointerException可谓是随时随处可见,为了避免空指针异常,我们常常需要进行一 些防御式的检查,所以在代码中常常可见if(obj != null) 这样的判断。幸好在JDK1.8中,java为我们提供了 一个Optional类,Optional类能让我们省掉繁琐的非空的判断。下面先说一下Optional中为我们提供的方法 方法 描述 of 把指定
2017-11-20 23:19:36
40453
14
原创 SpringBoot源码分析之CommandLineRunner、ApplicationRunner
我们在之前的文章中简单的说过SpringBoot的CommandLineRunner和ApplicationRunner这两个接口 SpringBoot之CommandLineRunner接口和ApplicationRunner接口,这篇文章中我们从源码上简单的分析一下这两个 接口。在org.springframework.boot.SpringApplication#run()这个方法中有这样
2017-11-19 23:12:32
2121
原创 SpringBoot特性之Actuator
SpringBoot自动配置的特性,很大程度上解放了我们繁琐的配置的工作,但是也向我们屏蔽了很多内部运行 的细节,好在SpringBoot为我们提供了Actuator,Actuator在应用程序里提供了众多的Web端点,通过它 们,我们可以了解应用程序运行时的内部状况。我们可以了解Bean的组装信息,获取环境配置信息,等等 Actuator为我们提供了如下的一些端口 HTTP方法
2017-11-19 20:48:21
1215
原创 使用线程池导出Excel数据
之前同事在做一个功能的时候,需要导出一些数据,但是组装数据量的过程比较麻烦一点,所以这里给了一个建议看看能不能使用多线程的方法来进行处理。顺便写了两个demo,一种方式是批量分段去往一个sheet页中写入数据,另一种方式是往多个sheet也中写入数据。demo如下: 批量分段导出数据package com.zkn.newlearn.opensource.poi;/** * Created b
2017-11-18 23:23:40
6850
1
Netty权威指南第2版.
2017-10-17
spring-framework-4.3.10.RELEASE
2017-08-31
Java程序员修炼之道
2016-12-19
dubbo-admin-2.5.4
2016-09-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人