
spring源码解读
小科比000
程序媛。。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
生命周期(五)--BeanPostProcessor原理
我们在MyBeanPostProcessor.postProcessBeforeInitialization方法中打上断点debug模式下运行可以看到整个容器创建,初始化过程在doCreateBean方法中看到调用initializeBean,进入调用方法,可以看到代码初始化方法invokeInitMethods前后调用了applyBeanPostProcessorsBeforeInitialization以及applyBeanPostProcessorsAfterInitialization点击进入原创 2020-05-22 18:25:33 · 457 阅读 · 0 评论 -
生命周期(四)--BeanPostProcessor-后置处理器
BeanPostProcessor【interface】:bean的后置处理器;在bean初始化前后进行一些处理工作; postProcessBeforeInitialization:在初始化之前工作 postProcessAfterInitialization:在初始化之后工作BeanPostProcessor是一个接口,我们需要定义一个类实现接口中的两个方法创建一个后置处理器,将后置处理器加入到容器中原创 2020-05-22 16:04:48 · 240 阅读 · 0 评论 -
生命周期(三)--@PostConstruct&@PreDestroy
创建Bean的时候我们还可以使用JSR250做初始化/销毁 @PostConstruct:在bean创建完成并且属性赋值完成;来执行初始化方法 @PreDestroy:在容器销毁bean之前通知我们进行清理工作创建一个Dog.java,还是用@Component方式注册组件创建初始化方法,将@PostConstruct注解加到方法上边,创建销毁方法,将@PreDestroy注解加到方法上边import原创 2020-05-22 15:18:45 · 192 阅读 · 0 评论 -
生命周期(二)--InitializingBean和DisposableBean
创建Bean的时候我们还可以通过让Bean实现InitializingBean(定义初始化逻辑), DisposableBean(定义销毁逻辑)自定义方法做初始化销毁eclipse中快捷键Ctrl+Shift+T,我们查看InitializingBean及DisposableBeanInitializingBean接口中包含一个afterPropertiesSet的方法DisposableBean中有一个destroy的方法我们通过实现这两个类中的方法进行bean的初始化销毁创建一个Ca原创 2020-05-22 12:26:48 · 214 阅读 · 0 评论 -
生命周期(一)--@Bean指定初始化和销毁方法
bean的生命周期: bean创建—初始化----销毁的过程容器管理bean的生命周期;我们可以自定义初始化和销毁方法;容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法指定初始化和销毁方法; 在bean.xml中可以指定init-method和destroy-method 通过@Bean指定init-method和destroy-met原创 2020-05-22 11:12:13 · 409 阅读 · 0 评论 -
组件注册(八)--使用FactoryBean注册组件
给容器中注册组件:1.包扫描+组件标注注解(@Controller@Service@Repository@Component) [自己写的]2.@Bean [导入的第三方包里边的组件]3.@Import [快速给容器中导入一个组件] 1).@Import(要导入到容器中的组件);容器中就会自动注册这个组件,id默认是全类名 2).ImportSelector:返回需要导入的组件的全类名数组; &原创 2020-05-22 10:36:20 · 285 阅读 · 0 评论 -
组件注册(七)--@Import-容器中导入组件
给容器中注册组件:1.包扫描+组件标注注解(@Controller@Service@Repository@Component) [自己写的]2.@Bean [导入的第三方包里边的组件]3.@Import [快速给容器中导入一个组件] 1).@Import(要导入到容器中的组件);容器中就会自动注册这个组件,id默认是全类名 2).ImportSelector:返回需要导入的组件的全类名数组; &原创 2020-05-20 19:21:49 · 877 阅读 · 0 评论 -
组件注册(六)--@Conditional-按照条件注册bean
@Conditional({Condition}) : 按照一定的条件进行判断,满足条件给容器中注册bean在此之前,我们需要准备两个Condition实现类,里边添加判断的一些条件condition.LinuxCondition.javaimport org.springframework.beans.factory.config.ConfigurableListableBeanFactory;import org.springframework.beans.factory.support.Bea原创 2020-05-08 18:20:16 · 175 阅读 · 0 评论 -
组件注册(五)--@Lazy-bean懒加载
配置类中默认为单例模式,此时创建容器完成时已经将person组件添加到了ioc容器中,之前在单例模式与多例模式中已经提到过,此时我们在组件person上加上@Lazy注解,将会懒加载,容器启动不创建对象,第一次创建Bean的时候才会创建对象import org.springframework.beans.factory.config.ConfigurableBeanFactory;import...原创 2020-05-08 15:49:35 · 292 阅读 · 0 评论 -
组件注册(四)--@Scope-设置组件作用域
scope注解的value属性值图示:创建一个新的配置类config.MainConfig2.javaimport org.springframework.beans.factory.config.ConfigurableBeanFactory;import org.springframework.context.annotation.Bean;import org.springfra...原创 2020-05-08 14:37:31 · 249 阅读 · 0 评论 -
组件注册(三)--自定义TypeFilter指定过滤规则
查看注解@Filter下的枚举类FilterType组件进行自定义过滤,根据源代码提示可以看出我们要创建一个类实现TypeFilterconfig.MyTypeFilter.javaimport java.io.IOException;import org.springframework.core.io.Resource;import org.springframework.core....原创 2020-05-08 14:32:44 · 914 阅读 · 1 评论 -
组件注册(二)--@ComponentScan-自动扫描组件&指定扫描规则
我们在config.MainConfig.java配置类中添加@ComponentScan注解进行规则配置import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.contex...原创 2020-05-08 14:26:46 · 747 阅读 · 0 评论 -
组件注册(一)--@Configuration&@Bean给容器中注册组件
spring重要的是AOC控制反转和DI依赖注入,spring认为所有的组件都应该放在AOC容器中,然后组件之间的关系通过容器进行自动装配,也就是依赖注入。注册组件两种方式1.利用resources下创建beans.xml配置文件的方式创建一个组件准备java文件bean.Person.javapublic class Person { private String name; pr...原创 2020-05-08 14:20:38 · 201 阅读 · 0 评论