决战圣地玛丽乔亚Day41 Spring其余部分
Posted Dva清流
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了决战圣地玛丽乔亚Day41 Spring其余部分相关的知识,希望对你有一定的参考价值。
扩展点:
BeanPostProcessor:在 Bean 初始化前后进行一些处理,常用于 AOP 功能的实现。
postProcessBeforeInitialization(初始化bean前)
postProcessAfterInitialization(初始化bean后)
BeanDefinitionRegistryPostProcessor:
可以向 BeanFactory 动态注册 BeanDefinition,也可以修改已经注册的 BeanDefinition。这个在BeanFactoryPostProcessor之前进行,是在refresh的invokeBeanFactoryPostProcessors中进行处理。
执行顺序:
BeanDefinitionRegistryPostProcessor > BeanFactoryPostProcessor > BeanPostProcessor
使用的方法:
1.实现 BeanDefinitionRegistryPostProcessor 接口,重写其 postProcessBeanDefinitionRegistry 方法
允许在BeanFactoryPostProcessor执行之前调用,对BeanDefinition对象进行增删改查操作
public class MyBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor @Override public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException // 在这里可以添加新的 BeanDefinition 或修改已有的 BeanDefinition @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException //将该类注册为 Spring 的 Bean,在 Spring 容器启动时会自动调用其 postProcessBeanDefinitionRegistry 方法。 @Configuration public class AppConfig @Bean public static MyBeanDefinitionRegistryPostProcessor myBeanDefinitionRegistryPostProcessor() return new MyBeanDefinitionRegistryPostProcessor();
tips:需要注意的是,如果我们在 postProcessBeanDefinitionRegistry 方法中添加了新的 BeanDefinition,那么这些 BeanDefinition 不会立即被实例化,而是需要等到下一次的 BeanFactoryPostProcessor 处理完成后才会被实例化。因此,如果我们需要在应用中使用这些新的 Bean,需要确保这些 Bean 已经被实例化。
需要注意一个问题:
BeanDefinitionRegistryPostProcessor 接口是继承的BeanFactoryPostProcessor
BeanFactoryPostProcessor:
postProcessBeanFactory方法,在bean的实例化之前,对beanFactory进行一些后置操作。
InstantiationAwareBeanPostProcessor:在 Bean 实例化之前和之后进行一些处理,可以对 Bean 进行定制化的实例化。
ApplicationListener:用于监听 Spring 事件,当事件发生时可以进行一些处理。
InitializingBean 和 DisposableBean:分别在 Bean 初始化和销毁时被调用。
@PostConstruct 和 @PreDestroy:分别在 Bean 初始化和销毁时被调用,通过注解方式来实现。
@Autowired 和 @Resource:用于实现自动装配。
如何控制事务?
事务的传播机制
多线程事务的处理
IOC和AOP
循环依赖的问题是怎么产生的,如何解决?
懒加载和饿汉加载的区别和应用
单例/多例模式的实现
以上是关于决战圣地玛丽乔亚Day41 Spring其余部分的主要内容,如果未能解决你的问题,请参考以下文章
决战圣地玛丽乔亚Day53-----分布式原理与RPC之服务治理与基本原理