摘要: 简介 调用时机:spring容器在创建当前bean时,会去调用接口BeanFactoryAware扩展点。 public interface BeanFactoryAware extends Aware { void setBeanFactory(BeanFactory beanFactory) t 阅读全文
posted @ 2023-10-12 10:32 扎Zn了老Fe 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 简介 依赖关系 序号Spring 内置事件描述1ContextRefreshedEventApplicationContext 被初始化或刷新时,该事件被发布。这也可以在ConfigurableApplicationContext接口中使用 refresh() 方法来发生。此处的初始化是指:所有的B 阅读全文
posted @ 2023-10-12 10:07 扎Zn了老Fe 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 简介 在Spring容器初始化时,首先会读取应用程序中的配置文件,并解析出所有的Bean定义生成beanDefinition对象,并注册到容器中。 Spring提供了扩展接口BeanDefinitionRegistryPostProcessor,其中含有两个方法: public interface 阅读全文
posted @ 2023-10-12 10:07 扎Zn了老Fe 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 简介 Spring启动部分流程: Spring IOC读取Bean的相关属性,保存到beanDefinition对象中。 加载完所有beanDefinition之后,调用BeanFactoryPostProcessor接口扩展点。 根据beanDefinition创建bean对象。 如果想获取bea 阅读全文
posted @ 2023-10-12 10:07 扎Zn了老Fe 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 简介 在bean创建过程中,Spring提供了扩展接口InstantiationAwareBeanPostProcessor扩展bean创建功能。 public interface InstantiationAwareBeanPostProcessor extends BeanPostProcess 阅读全文
posted @ 2023-10-12 10:07 扎Zn了老Fe 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 简介 创建对象最简单的方式是直接使用new操作符,如果创建对象比较繁杂,可以采用工厂模式。同样Spring中提供了FactoryBean接口来帮助创建对象。 public interface FactoryBean<T> { T getObject() throws Exception; Class 阅读全文
posted @ 2023-10-12 10:07 扎Zn了老Fe 阅读(6) 评论(0) 推荐(0) 编辑
摘要: Spring实例化之后,提供三种初始化的方法: 使用JSR-250规范定义的@Postconstruct注解。 实现InitializingBean接口,实现afterPropertiesset()方法。 使用Spring提供的@Bean init-method标签。 执行顺序:@Postconst 阅读全文
posted @ 2023-10-12 10:07 扎Zn了老Fe 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 简介 上下文(ConfigurableApplicationContext)刷新(当spring框架内部执行 ConfigurableApplicationContext#refresh() 方法的时候或者在SpringBoot的run()执行时)之前,Spring提供了扩展接口Applicatio 阅读全文
posted @ 2023-10-12 10:07 扎Zn了老Fe 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 简介 该接口目前有两个方法: postProcessBeforeInitialization 该在初始化方法之前调用。 postProcessAfterInitialization 该方法再初始化方法之后调用。 public interface BeanPostProcessor { @Nullab 阅读全文
posted @ 2023-10-12 10:07 扎Zn了老Fe 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 简介 Spring启动时,容器刷新完成之后,提供了扩展接口CommandLineRunner或者ApplicationRunner, 执行最后的逻辑。 public interface ApplicationRunner { void run(ApplicationArguments args) t 阅读全文
posted @ 2023-10-12 10:07 扎Zn了老Fe 阅读(39) 评论(0) 推荐(0) 编辑