读spring源码
编码的三叔
坚持是一种信仰。
展开
-
《读spring源码》19 Bean的生命周期总结(未完)
1、什么是springbean的生命周期springbean的生命周期,简单来说,就是springbean在spring容器中实例化的时机,以及springbean的实例化过程中的一些行为。springbean的实例化时机,根很多原因有关,其中一个就是springbean的作用域。在spring中的bean默认是单例的,那么bean还有什么类型的作用域呢?2、springbean的作用域 @...原创 2019-12-01 22:09:54 · 354 阅读 · 0 评论 -
《读spring源码》18 Bean的生命周期简单探索(实现BeanPostProcessor接口下面的前置处理器与后置处理器 )
代码结构:代码如下:实现BeanPostProcessor下面的前置处理器和后置处理器package com.enjoy.cap7;import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.BeanPostProcessor;import org.s...原创 2019-12-01 20:22:47 · 676 阅读 · 0 评论 -
《读spring源码》17 Bean的生命周期简单探索(基于JSR250规范@PostConStruct@PreDestory)
可以使用JSR250规范定义的(JAVA规范)两个注解来实现@PostConStruct:在bean创建完成,且属于赋值完成后进行初始化,属于JDK规范的注解@PreDestory:在bean将被移除之前进行通知,在容器销毁之前进行清理工作提示:JSR是由JDK提供的一组规范package com.enjoy.cap7;import org.springframework.stereo...原创 2019-12-01 11:01:06 · 184 阅读 · 0 评论 -
《读spring源码》16 Bean的生命周期简单探索(实现InitializingBean和DisposableBean 接口)
1、实现InitializingBean接口的afterPropertiesSet()方法,当beanFactory创建好对象,且把bean所有属性设置好之后,会调用这个方法,相当于初始化方法。2、实现DisposableBean的destory方法,当bean销毁时会把单实例bean进行销毁package com.enjoy.cap7;import org.springframewor...原创 2019-12-01 10:49:05 · 190 阅读 · 0 评论 -
《读spring源码》15 Bean的生命周期简单探索(单实例)
之前的版本中 bean 是可以在xml文件中 配置bean的初始化和销毁的method <bean id = "person" class="com.enjoy.cap1.Person" init-method="" destroy-method=""> <property name="name" value="wyl"></property...原创 2019-12-01 10:02:01 · 104 阅读 · 0 评论 -
《读spring源码》14实现FactoryBean接口
package com.enjoy.cap6;import com.enjoy.cap1.Person;import com.enjoy.cap5.LinCodition;import com.enjoy.cap5.WinCodition;import org.springframework.context.annotation.Bean;import org.springframe...原创 2019-11-30 21:22:22 · 168 阅读 · 0 评论 -
《读spring源码》13实现ImportBeanDefinitionRegistrar接口可以手动添加组件到IOC容器
package com.enjoy.cap6;import org.springframework.beans.factory.support.BeanDefinitionRegistry;import org.springframework.beans.factory.support.BeanNameGenerator;import org.springframework.beans.f...原创 2019-11-30 20:53:08 · 230 阅读 · 0 评论 -
《读spring源码》12实现ImportSelector接口引入多个 类全名然后 引入容器多个bean
我们可以通过实现ImportSelector接口引入多个 类全名然后 引入容器多个bean 示例如下:package test;import com.enjoy.cap6.MainConfig;import org.junit.jupiter.api.Test;import org.springframework.context.annotation.AnnotationConfig...原创 2019-11-30 20:23:22 · 185 阅读 · 0 评论 -
《读spring源码》11注解@Import(value = {Dog.class}) 注册bean
package com.enjoy.cap6;import com.enjoy.cap1.Person;import com.enjoy.cap5.LinCodition;import com.enjoy.cap5.WinCodition;import org.springframework.context.annotation.Bean;import org.springframe...原创 2019-11-30 11:11:40 · 214 阅读 · 0 评论 -
《读spring源码》10注解@Conditional(LinCodition.class) 注册bean
使用@Conditional注解在bean加载之前对其进行控制 案例如下:package com.enjoy.cap5;import com.enjoy.cap1.Person;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Conditi...原创 2019-11-30 10:28:36 · 132 阅读 · 0 评论 -
《读spring源码》9注解@ComponentScan 中useDefaultFilters中默认扫描是如何扫描的
package com.enjoy.cap2.MainConfiguer;import com.enjoy.cap1.Person;import com.enjoy.cap2.controller.OderController;import org.springframework.context.annotation.Bean;import org.springframework.co...原创 2019-11-30 09:56:07 · 249 阅读 · 0 评论 -
《读spring源码》8注解@Lazy懒加载 测试先创建容器还是先创建bean
其实在懒加载的时候只有bean被用到的时候才会加载bean,并不是在创建容器的时候创建的bean演示代码如下:package com.enjoy.cap4;import com.enjoy.cap1.Person;import org.springframework.context.annotation.*;@Configurationpublic class MainConf...原创 2019-11-29 22:42:16 · 204 阅读 · 0 评论 -
《读spring源码》7注解@Scope扫描规则
IOC容器:多实例:仅当bean被使用的时候才创建单实例:创建IOC容器的时候实例就会被创建如下是@Scope的注解代码结构:测试 默认情况下多次取对象是不是 取到的同一个package com.enjoy.cap3;import com.enjoy.cap1.Person;import com.enjoy.cap2.controller.OderController;im...原创 2019-11-29 22:28:58 · 110 阅读 · 0 评论 -
《读spring源码》6注解@ComponentScan的FilterType.CUSTOM 讲解 自定义过滤器
在@ComponentScan 注解FilterType.CUSTOM 如何使用:package com.enjoy.cap2.MainConfiguer;import com.enjoy.cap1.Person;import com.enjoy.cap2.controller.OderController;import org.springframework.context.anno...原创 2019-11-29 21:49:13 · 1864 阅读 · 1 评论 -
《读spring源码》5注解@ComponentScan的includeFilters 和excludeFilters
过滤类型有如下五种: FilterType type() default FilterType.ANNOTATION;根据注解进行刷选并不使用默认值刷选出,controller的beanpackage com.enjoy.cap2.MainConfiguer;import com.enjoy.cap1.Person;import org.springframework.con...原创 2019-11-29 09:12:50 · 774 阅读 · 0 评论 -
《读spring源码》4注解@ComponentScan作用
项目结构如下:package com.enjoy.cap2.MainConfiguer;import com.enjoy.cap1.Person;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import o...原创 2019-11-29 08:56:15 · 590 阅读 · 0 评论 -
《读spring源码》3根据bean注解探索注解形式的bean name是从哪里来的?
我们会发现bean会有一个默认的名字那么这个名字是怎么来的?package com.enjoy.cap1.config;import com.enjoy.cap1.Person;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configu...原创 2019-11-28 21:03:53 · 149 阅读 · 0 评论 -
《读spring源码》2根据bean注解探索
把xml换成注解形式的配置类 用起来更加方便打印结果:package com.enjoy.cap1;import com.enjoy.cap1.config.MainConfig;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation....原创 2019-11-28 20:57:47 · 118 阅读 · 0 评论 -
《读spring源码》1根据beanxml探索
简单讲解,本是怎么被IOC加载到内存的实例如下:运行效果如下:代码如下:package com.enjoy.cap1;import lombok.Data;@Datapublic class Person { private String name; private Integer age;}package com.enjoy.cap1;import...原创 2019-11-28 20:38:43 · 129 阅读 · 0 评论