Tomcat Spring Spring Boot Mybatis 一网打尽
2021-09-22 22:38:40 4 举报
Spring Spring Boot Mybatis 工作流程
作者其他创作
大纲/内容
ClassLoader
deployDirectory
delegate
三级缓存
sqlsessionstatementIdsql参数RowBounds环境 dev
instantiateClass
StandardService
BaseExecutor
create
context
处理 #{ }
caches
SqlSessionFactoryBuilder
createBeanInstance
处理二级缓存
value
process handler
initMessageSource();
Sqlsession
BatchExecutor
service
对象销毁
getSpringFactoriesInstances(ApplicationContextInitializer.class)
属性
RoutingStatementHandler
getMapper
Druid 的实现
init
命中
DruidAbstractDataSource
resultMap
处理一级缓存
context.setApplicationStartup
registerBeanPostProcessors(beanFactory);
Transaction
PipeLine
结束
Start
InputSource
mybatis-config.xml
handler
bean 的定义信息
执行aware
configureIgnoreBeanInfo
IOC
StandardServer
prepareRefresh();
Engine
prepareContext
执行ApplicationRunListeners中的started()方法
finishRefresh();
Nio2Endpoint
resultSetHandler
prepareEnvironment
preInstantiateSingletons
注册BeanFactoryPostProcessor
DataSource
new DefaultApplicationArguments(args)
start
getSpringFactoriesInstances(ApplicationListener.class)
Host
StatementHandler
config
XxxMapper
container
sqlSessionFactory
变量提升
exceptionTranslator
SpringApplication
singletonFactories
国际化
AbstractEndpoint
PreparedStatement
registerListeners();
执行两个Runner(ApplicationRunner和CommandLineRunner)
loadBeanDefiniation
BeanPostProcessor.before
AbstractAutowireCapableBeanFactory
wrapper
sqlSessionProxy
对环境的值判断,以及设置
保存使用ApplicationStartup来标记应用程序启动期间的步骤,以及记录一些收集到的执行上下文或其处理时间的数据
开始记录run()启动过程时长
Configuration
populateBean
Adapter
instantiate
StandardEngine
Tomcat架构图
属性填充
typeHandlerRegistry
refreshContext
mapperRegistry
Executor
protocolHandler
AnnotationConfigApplicationContext
ApplicationListener
实例化
Connector
PreparedStatementHandler
configuration
GenericApplicationContext
getSpringFactoriesInstances(BootstrapRegistryInitializer.class)
结果
query
localCache.getObject
动态代理
createBeanFactory();
refresh
listeners.starting
getClassLoad
init-mathod
earlySingletonObjects
RawSqlSources
方式一
DefaultSqlSessionFactory
ProtocolHandler
invokeBeanFactoryPostProcessors(beanFactory);
hostConfig
MyBatisExceptionTranslator
SpringBoot启动
invokeAware
sessionFactory
启动了监听器
通过 SPI 机制去扫描 META-INF/spring.factories
监听器
sqlSessionTemplate
newInstance
host
setListeners
通过反射实例化对象(springfactoriesLoder)
开始
对象
准备阶段
解决循环引用
ReuseExecutor
SimpleExecutor
结果处理器
StartEngine
typeAliasRegistry
Tomcat启动
加载 ApplicationContextInitializer 接口的实例,加载所有初始化器 7个
处理 ${ }
把参数封装成提供运行SpringApplication 的参数的访问的这个接口对象
StandardContext
创建tomcat
Wrapper
Spring Boot 启动流程
spring 的启动代码,这里边扫描并初始化 bean 了,然后 spring boot 内嵌的web 容器也在这里边被启动
获取class
Oeder排序
doCreateBean
SpringApplication.run()
factory
BeanPostProcessor
getResources
newListeners
classLoader
initApplicationEventMulticaster();
Bootstrap
StartConnector
getSpringFactoriesInstances(SpringApplicationRunListener.class)
endpoint
获取beanFactory
finishBeanFactoryInitialization(beanFactory);
localCacheScope
printBanner
listeners.running(context);
run
DynamicSqlSources
SpringBoot工作流程
interceptorChain
lifecycleEvent
AbstractApplicationContext
二级缓存
TransactionalCacheManager
executorType
finishBeanFactoryInitialization
getRunListeners(args);
DB
文本
adapter
Dao
创建上下文,创建的方法里是要用到new 时候那个 WebApplicationType
afterRefresh
EventPublishingRunListener
SimpleInstantiationStrategy
BeanUtils
设置环境变量
serverSock
configureHeadlessProperty();
transactionFactory
stopWatch.start();
ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();
catalina
启停线程池
创建监听器(类当springboot启动时事件change后都会触发) 13个
CachingExecutor
onRefresh();
Lifecycle
运行阶段
mapperListener.start
init-method
访问对象绑定
AbstractBeanFactory
new
类
handleResultSets
ApplicationContextInitializer
获取构造器
queryFromDatabase
mapperProxy
打印 banner
listeners.started(context);
Mybatis运行过程中,会按照需要进行上述四大对象的创建: 在创建SqlSession时会进行Executor对象的创建; 在执行sql语句的时候会创建StatementHandler对象的创建; 在创建StatementHandler对象的过程中,会进行ParameterHandler和ResultSetHandler这两个辅助对象的创建。
SqlSource
获取事件监听器
执行BeanFactoryPostProcessor
停止计时器
stopWatch.stop();
getBean
BeanDefinition
http等protocol
通过构造器创建对象
context.getBeanFactory
refreshBeanFactory()
postProcessBeanFactory(beanFactory);
factoryBuilder
ParameterHandler
BeanFactory
UserMapper
准备上下文,将前边的几个变量全丢进这个方法的参数里创建工厂 new DefaultListableBeanFactory
bind()
main
放在一级缓存
读取java类定义信息
mapper
realm
mappedStatements
CoyoteAdapter
参数处理器
dataSource
resetCommonCaches();
Application
...
loadBeanDefinitions
全限定名
openSession
创建Application对象
doQuery
双亲委派
setInitializers
SqlSessionFactory
mapperListener
jdbc处理器
Spring的逻辑
exceptionTranslatorLazyInit =true
build
SqlSessionTemplate
AnnotationBeanNameGenerator
注册监听器
GenericBeanDefinition
图例
xml
prepareBeanFactory(beanFactory);
Context
defaultExecutorType
Mybatis 四大对象1、Executor :SIMPLE、RESUE、BATCH2、StatementHandler :SIMPLE、PREPARED、CALLABLE3、ParameterHandler4、ResultSetHandler
AbstractHttp11Protocol
bootstrapRegistryInitializers
refres()
beanNameGenerator
实例
AbstractAppcationContext
statementIdsql参数RowBounds
new StopWatch();
parameterize
方式二
connector
接口
Environment
singletonObjects
DefaultListableBeanFactory
createApplicationContext
init()
LifecycleBase
BeanPostProcessor.after
environment
方法
DefaultParameterHandler
添加BeanFactoryPostProcessor
cluster
DruidDataSource
executor.start
execute
反射获取构造器
监听器启动
prepareStatement
Container
0 条评论
下一页