主页

【理解Spring】Spring启动

概览 通常所说的 Spring 启动,就是构造 ApplicationContext 对象以及调用 refresh() 方法的过程,其中最核心的内容是 调用BeanFactoryPostProcessors 和 解析配置类。 Spring 启动过程主要执行了: 构造一个 BeanFactory 对象 解析配置类,得到 BeanDefinition,并注册到 BeanFactory 中 解析 @ComponentScan,并完成扫描 解析 @Import 解析 @Bean … 初始化 MessageSource 对象(ApplicationContext 支持国际化) 初始化 Applicati...

阅读更多

【理解Spring】FactoryBean

代码示例: @Component public class CustomerFactoryBean implements FactoryBean { @Override public Object getObject() throws Exception { return new UserService(); } @Override public Class<?> getObjectType() { return UserService.class; } } 自定义 FactoryBean 可以控制 Bean 的创建。 在 Spring 的启动流程中, 会把 Cust...

阅读更多

【理解Spring】BeanPostProcessor

BeanPostProcess表示 Bean 的后置处理器 一个BeanPostProcessor可以在任意一个 Bean 的初始化之前以及初始化之后去额外的做一些用户自定义的逻辑 当然,也可以通过判断 beanName 来进行针对性处理(针对某个Bean,或某部分Bean) 可以通过定义BeanPostProcessor来干涉 Spring 创建 Bean 的过程 可以定义一个或多个 BeanPostProcessor,例如: @Component public class CustomerBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBefor...

阅读更多

【理解Spring】ApplicationContext

在 Spring 中 ApplicationContext 继承了 ListableBeanFactory 和 HierarchicalBeanFactory,而 ListableBeanFactory 和 HierarchicalBeanFactory 都继承至 BeanFactory, 所以可以认为 ApplicationContext 继承了 BeanFactory public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher,...

阅读更多

【理解Spring】BeanFactory

BeanFactory 顾名思义负责创建 Bean,并且提供了获取 Bean 的 API。 DefaultListableBeanFactory DefaultListableBeanFactory 继承 BeanFactory,同时支持很多其他功能,DefaultListableBeanFactory 在 Spring 中发挥非常重要的作用。 DefaultListableBeanFactory的类继承实现结构: DefaultListableBeanFactory 实现了很多接口,也即拥有很多功能: AliasRegistry :支持别名功能,一个名字可以对应多个别名 BeanDefinitionRegistry :可以注册、保存、移除、获取某个 BeanDefi...

阅读更多

【理解Spring】BeanDefinitionReader

Spring 提供的 BeanDefinition 读取器(BeanDefinitionReader),在使用 Spring 开发时用得少,但在 Spring 源码中很常见,相当于 Spring 基础设施 AnnotatedBeanDefinitionReader 可以直接把某个类转换为 BeanDefinition,并且会解析该类上的注解,比如 AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); AnnotatedBeanDefinitionReader annotatedBeanDefinitionReader = new An...

阅读更多

【理解Spring】BeanDefinition

A BeanDefinition describes a bean instance, which has property values, constructor argument values, and further information supplied by concrete implementations. BeanDefinition,表示 Bean 定义。 BeanDefinition 用于保存 Bean 的相关信息,包括 Class,表示 Bean 类型 Scope,表示 Bean 作用域,单例(Singleton)或原型(Prototype)等 LazyInit:表示 Bean 是否是懒加载 InitMethodName:表示 Bean 初始...

阅读更多

理解 InnoDB MVCC 机制

MVCC,全称 Multi-Version Concurrency Control,即多版本并发控制。 多版本并发控制(Multi-version Concurrency Control): 指的是一种提高并发的技术。最早的数据库系统,只有读读之间可以并发,读写,写读,写写都要阻塞。引入多版本之后,只有写写之间相互阻塞,其他三种操作都可以并行,这样大幅度提高了InnoDB的并发度。 MVCC在 Read Committed 和 Repeatable Read两个隔离级别下工作。 要理解数据库的 MVCC 需要先了解数据库的事务隔离级别。 其中 Read Uncommitted 几乎没有隔离性,所以无需做任何处理; Serializable 要保证每个事务强隔离,所以对每个事务强行串...

阅读更多