
Spring
服务端开发
这个作者很懒,什么都没留下…
展开
-
Spring源码分析(一):从哪里开始看spring源码(系列文章基于Spring5.0)
概述原创 2019-01-19 01:01:11 · 170434 阅读 · 28 评论 -
Spring MVC源码分析(二):Spring容器的加载
概述原创 2019-01-19 13:37:14 · 13789 阅读 · 3 评论 -
Spring MVC源码分析(三):请求分发器DispatcherServlet的设计与实现
概述原创 2019-01-22 17:29:01 · 9093 阅读 · 1 评论 -
Spring MVC源码分析(四):请求处理器体系结构设计与实现
概述原创 2019-01-20 12:54:19 · 7408 阅读 · 0 评论 -
Spring IOC源码分析(五):IOC的容器上下文ApplicationContext的自顶向下分析
ApplicationContext接口:最底层接口,通过继承BeanFactory接口的方法,定义了与BeanFactory的关联绑定,以及其他功能组件,如Environment,MessageSource等的关联。public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, Hie...原创 2019-01-22 17:12:31 · 7566 阅读 · 0 评论 -
Spring IOC源码分析(六):BeanFactory体系结构与IOC容器的核心组件分析
一. 概述Spring容器通常指定的ApplicationContext的体系结构设计,即整个Spring框架的IOC功能,是通过ApplicationContext接口实现类来提供给应用程序使用的。应用程序通过ApplicationContext提供方法来间接与内部Bean工厂交互,如获取Bean对象实例等。在Spring框架内部设计当中,ApplicationContext是Spring...原创 2019-01-27 16:04:24 · 6350 阅读 · 0 评论 -
Spring IOC源码分析(七):IOC容器的对象存储体系与bean对象的加载流程
一、IOC容器的设计与实现1. 获取bean对象spring的IOC容器主要通过BeanFactory接口的getBean方法来从IOC容器,即BeanFactory的实现类中获取某个bean对象实例,如下为BeanFactory的getBean方法定义:public interface BeanFactory { ... /** * Return an ins...原创 2019-03-08 18:04:28 · 5131 阅读 · 0 评论 -
Spring源码分析:applicationContext.xml文件解析与NamespaceHandler
概述Spring容器启动,在创建BeanFactory时,需要加载和解析当前ApplicationContext对应的配置文件applicationContext.xml,从而获取bean相关的配置信息。在内部实现的调用关系为:ApplicationContext通过XmlBeanDefinitionReader来完成从applicationContext.xml获取应用配置的bean信息,...原创 2019-01-28 12:14:58 · 5773 阅读 · 0 评论 -
Spring Bean对象初始化和销毁相关回调的用法和源码实现
XML配置或者@Bean注解构造后置处理:在bean标签的init-method中指定处理方法;或者使用@Bean注解的initMethod指定,其中@Bean通常为@Configuration(或者是@Component或@Component的子注解,如@Service,@Configuration是@Component的一个子注解)注解里面的@Bean方法;销毁前置处理:在bean标签的...原创 2019-01-26 15:02:23 · 6013 阅读 · 0 评论 -
Spring依赖注入:@Autowired,@Resource和@Inject区别与实现原理
注入实现方式@Autowired主要可以在set方法,field,构造函数中完成bean注入,注入方式为byType的,如果存在多个同一类型的bean,则使用@Qualifier来指定注入哪个beanName的bean。与JDK的@Resource的区别:@Resource是基于beanName来查找bean注入的,而@Autowried是基于类型来查找bean注入的。与JDK的@Inje...原创 2019-01-26 12:06:46 · 7323 阅读 · 0 评论 -
Spring的三种依赖注入方式的使用和源码实现分析
一、自动依赖注入的方式注解类型spring提供了基于注解的属性自动注入特性,其中可以可用的注解包括spring自身提供的@Autowired和@Value,其中@Autowired是我们在项目中最常用来注入对象属性的,@Value注解通常用于注入属性文件properties的值,除此之外还可以使用JSR-330提供的注解@Inject,类型为javax.inject.Inject。如下:...原创 2019-05-26 00:14:00 · 8104 阅读 · 0 评论 -
Spring的构造函数注入的循环依赖问题
一、循环依赖spring的循环依赖主要是指两个类相互之间通过@Autowired自动依赖注入对方,即类A包含一个类B的对象引用并需要自动注入,类B包含一个类A的对象引用也需要自动注入。对于循环依赖问题,spring根据注入方式的不同,采取不同的处理策略,对于双方都是使用属性值注入或者setter方法注入,则spring可以自动解决循环依赖注入问题,应用程序可以成功启动;对于双方都是使用构造函...原创 2019-05-26 11:02:18 · 16795 阅读 · 13 评论 -
基于注解@EnableWebMvc启用SpringMvc的用法与实现原理
用法与最佳实践在@Configuration注解的配置类中添加,用于为该应用添加SpringMVC的功能,即添加之后可以在项目中,可以使用@RequestMapping,@Controller等注解来定义请求处理与请求uri的映射和其他SpringMvc提供的功能。使用方法如下:@Configuration@EnableWebMvc@ComponentScan(basePackageCla...原创 2019-01-28 15:32:30 · 11166 阅读 · 2 评论 -
Spring AOP源码分析(一):AOP与基础接口设计
一、概述SpringAOP设计的主要目的是将多个方法中的公用逻辑抽离出来,封装在一个Interctor拦截器中,然后使用该拦截器对这些方法的调用Invocation进行拦截,从而将这些公用逻辑添加回去,完成一次完整的方法调用。从而实现公用逻辑的复用,避免同一个公用功能的代码重复定义、实现,造成代码冗余。从应用程序编码到应用程序执行的完整过程来看:首先在应用代码的方法中定义业务逻辑,然后在...原创 2019-02-22 11:52:57 · 5317 阅读 · 0 评论 -
Spring AOP源码分析(二):AOP的三种配置方式与内部解析实现
AOP配置在应用代码中,可以通过在spring的XML配置文件applicationContext.xml或者基于注解方式来配置AOP。AOP配置的核心元素为:advice,pointcut,advisor,其中advice用于声明辅助方法,pointcut用于定义需要该辅助功能的类或方法集合,advisor则是将两者结合起来,在spring的IOC容器启动时,为pointcut匹配的类生成...原创 2019-03-07 23:59:28 · 4340 阅读 · 0 评论 -
Spring AOP源码分析(三):基于JDK动态代理和CGLIB创建代理对象的实现原理
IOC容器的bean对象创建在之前的文章中已经分析过IOC容器的bean对象的创建过程,具体在:Spring IOC源码分析(七):IOC容器的设计实现与bean对象的创建流程,其中核心方法为AbstractAutowireCapableBeanFactory的createBean:首先检查是否创建了代理bean对象,如果创建了bean对象则直接返回;否则进入正常bean对象的创建流程,具...原创 2019-03-09 00:02:11 · 3894 阅读 · 1 评论 -
Spring基于@Configuration的类配置的用法
使用@Configuration来注解里面包含多个@Bean注解的方法的类。这些使用@Bean注解的方法,会被加载为BeanFactory里面的BeanDefinition,其中beanName默认为方法名。其实就相当于一个xml配置文件的beans标签。生效方式使用AnnotationConfigApplicationContext,在refresh之前,通过AnnotationC...原创 2019-01-25 18:34:13 · 11907 阅读 · 0 评论 -
Spring基于@Configuration的类配置的内部源码实现
概述Spring容器启动时,即执行refresh方法时,主要是通过执行ConfigurationClassPostProcessor这个BeanFactoryPostProcessor,来开启整个@Configuration注解的系列类的加载的,即开启基于@Configuration的类配置代替beans标签的容器配置的相关bean的加载。而ConfigurationClassPostPro...原创 2019-01-27 09:07:42 · 6116 阅读 · 0 评论 -
@Configuration注解的类的加载(注意不是处理@Configuration注解处理)实现原理
概述这里主要分析@Configuration注解的类自身的加载的实现,即生成该类对应的BeanDefinition,注册到BeanFactory,此时该类就跟一个普通使用了如@Component注解的类一样,是在创建和初始化BeanFactory的过程中完成的。而@Configuration注解的处理是通过ConfigurationClassPostProcessor来完成的,Configur...原创 2019-01-29 10:17:40 · 13007 阅读 · 2 评论