Spring
2022-06-05 16:54:51 0 举报
AI智能生成
Spring相关技术栈
作者其他创作
大纲/内容
1、ClassPathXmlApplicationContext
2、AnnotationConfigApplicationContext
1、BeanDefinitionRegistry
1、核心组件
1、 spring-core
1、核心模块源码
1、调用父级 GenericApplicationContext 构造函数
1、设置当前环境信息
1、AnnotatedBeanDefinitionReader
1、设置当前环境信息 与 DefinitionReader 类似
2、ClassPathBeanDefinitionScanner
2、调用本类构造函数实例化BeanDefinition
1、设置基本环境(状态,时间)
2、initPropertySources
3、校验本环境下必须的参数配置信息
4、earlyApplicationListeners 存储前期程序监听
5、初始化前期程序事件 earlyApplicationEvents
1、prepareRefresh 准备上下文环境
1、获取Bean工厂序列化ID
2、将BeanFactory存储 serializableFactories
1、刷新Bean工厂 refreshBeanFactory
2、获取Bean工厂
2、obtainFreshBeanFactory 获取告诉子类初始化Bean工厂
1、初始化类加载器 ClassLoader
2、加载标准表达式解析器 StandardBeanExpressionResolver
3、加载资源编辑器 ResourceEditorRegistrar
4、加载前置后置处理器 ApplicationContextAwareProcessor
1、EnvironmentAware
2、EmbeddedValueResolverAware
3、ResourceLoaderAware
4、ApplicationEventPublisherAware
5、MessageSourceAware
6、ApplicationContextAware
5、忽略给定接口的自动装配功能 ignoreDependencyInterface
1、BeanFactory
2、ResourceLoader
3、ApplicationEventPublisher
4、ApplicationContext
6、注册有冲突(多个)实例的Bean registerResolvableDependency
7、加载后置处理器 ApplicationListenerDetector
1、加载前置后置处理器 LoadTimeWeaverAwareProcessor
2、设置临时类加载器 ContextTypeMatchClassLoader
8、织入Bean的场合
1、注册环境Bean
9、没有注册环境Bean的场合
1、注册配置Bean
10、没有注册配置Bean的场合
1、注册系统环境Bean
11、没有注册系统环境Bean的场合
3、prepareBeanFactory 对bean工厂进行填充属性
4、postProcessBeanFactory 留个子类去实现改接口
1、获取Bean工厂前后置处理器 getBeanFactoryPostProcessors
postProcessBeanDefinitionRegistry
1、如果前后置处理器为BeanDefinitionRegistryPostProcessor类型
1、遍历所有的前后置处理器
1、transformedBeanName 别名转换
2、getSingleton 尝试缓存中获取Bean
1、getParentBeanFactory 获取父容器
2、父容器获取的场合
3、getMergedLocalBeanDefinition
4、checkMergedBeanDefinition
1、isDependent
2、registerDependentBean
3、getBean 获取DependOn Bean
1、存在的场合
5、获取DependOn 依赖Bean的名称
1、this.singletonObjects.get(beanName)
2、beforeSingletonCreation
1、resolveBeanClass
2、prepareMethodOverrides
3、resolveBeforeInstantiation
4、doCreateBean
1、createBean
3、singletonFactory.getObject()
4、afterSingletonCreation(beanName)
5、addSingleton
getSingleton
6、创建单例bean
3、获取为空的场合
1、doGetBean
2、getBean
1、如果beanFactory是BeanDefinitionRegistry
2、invoke Bean工厂前后置处理器 invokeBeanFactoryPostProcessors
5、invokeBeanFactoryPostProcessors调用我们的Bean工厂的后置处理器
6、registerBeanPostProcessors 调用Bean的后置处理器
7、initMessageSource 初始化国际化资源
8、initApplicationEventMulticaster 创建事件多播器
9、onRefresh 这个方法同样也是留给子类实现的 SpringBoot 也是从这个方法启动tomcat的
10、registerListeners把事件监听器注册到多播器上
11、finishBeanFactoryInitialization 实例化剩余的单实例bean
12、finishRefresh 最后容器刷新 发布刷新事件(Spring Cloud 也是从这里启动的)
3、调用refresh()刷新Bean
1、AnnotationConfigApplicationContext
1、ApplicationContext
1、Bean 注入流程
控制反转
1、控制反转,把对象创建和对象之间的调用过程,交给 Spring 进行管理
2、使用 IOC 目的:为了耦合度降低
1、概述
1、xml解析
2、工厂模式
3、反射
2、底层原理
2、原理
2、IOC
1、编译期织入
2、类加载期织入
3、运行期织入
1、织入切面的方式
3、AOP
1、方便解耦
2、简化开发
3、aop编程的支持
4、方便程序测试
5、方便和其它框架继承
6、声明式事务,方便事务管理,降低api的开发难度
4、特点
事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操 作都失败
不可分割
1、原子性
操作之前和操作之后总量不变
2、一致性
多事务操作不影响
3、隔离性
持久化
4、持久性
2、特性 ACID
1、编程式事务管理
加在方法上,则该方法开启事务
加载类上,则该类的所有方法开启事务
如果有事务,则当前方法在该事务中运行,如果没有事务,则创建事务
1、REQUIRED
无论是否有事务都会创建新的事务,有事务将会把事务挂起
2、REQUIRED_NEW
如果有事务则在事务中运行,没有事务则不在事务中执行
3、SUPPORTS
当前方法不应该在事务中运行,如果有,则将事务挂起
4、NOT_SUPPORTED
当前方法必须在事务中运行,如果没有则抛出异常
5、MANRORY
当前方法不应该在事务中运行,如果存在则抛出异常
6、NEVER
如果有事务在运行,当前方法应该在嵌套的事务中运行,如果没有就开启一个新事务,并在自己的事务中运行
7、NESTED
2、传播性 propagation
事务有特性成为隔离性,多事务操作之间不会产生影响。不考虑隔离性产生很多问题
1、脏读
2、不可重复读
3、虚(幻)读
2、不考虑隔离性,并发事务的场合问题
3、事务隔离级别 ioslation
4、timeout 超时时间
5、readonly 是否只读
6、rollbackFor 回滚
7、noRollbackFor 不回滚
@Transactional
1、注解
2、xml配置
2、声明式事务管理
3、方式
AOP
4、原理
TransactionManager
5、事务管理API
5、事务
3.Spring Framework
Spring
0 条评论
回复 删除
下一页