1,实例化DefaultListableBeanFactory
DefaultListableBeanFactory是AnnotationConfigApplicationContext的组件,DefaultListableBeanFactory在AnnotationConfigApplicationContext实例化时被实例化。在SpringApplication.createApplicationContext()判断实例化那种类型ApplicationContext。DefaultListableBeanFactory实例化stack如下
Thread [main] (Suspended (breakpoint at line 181 in DefaultListableBeanFactory))    
    DefaultListableBeanFactory.<init>() line: 181    
    AnnotationConfigApplicationContext(GenericApplicationContext).<init>() line: 109    
    AnnotationConfigApplicationContext.<init>() line: 64    
    NativeConstructorAccessorImpl.newInstance0(Constructor<?>, Object[]) line: not available [native method]    
    NativeConstructorAccessorImpl.newInstance(Object[]) line: 62    
    DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 45    
    Constructor<T>.newInstance(Object...) line: 423    
    BeanUtils.instantiateClass(Constructor<T>, Object...) line: 146    
    BeanUtils.instantiateClass(Class<T>) line: 106    
    SpringApplication.createApplicationContext() line: 586    
    SpringApplication.run(String...) line: 321    
    SpringApplication.run(Class<?>[], String[]) line: 1245    
    SpringApplication.run(Class<?>, String...) line: 1233    
    Application.main(String[]) line: 51    
Spring应用启动首先加载所有由spring容器管理对象的类定义保存在DefaultListableBeanFactory.beanDefinitionMap和DefaultListableBeanFactory.beanDefinitionNames,beanDefinitionNames记录排序如下图。
第一个注册的是org.springframework.context.annotation.internalConfigurationAnnotationProcessor,在AnnotationConfigApplicationContext对象创建时注册如下面stack
Thread [main] (Suspended (breakpoint at line 779 in DefaultListableBeanFactory))    
    DefaultListableBeanFactory.registerBeanDefinition(String, BeanDefinition) line: 779    
    AnnotationConfigApplicationContext(GenericApplicationContext).registerBeanDefinition(String, BeanDefinition) line: 324    
    AnnotationConfigUtils.registerPostProcessor(BeanDefinitionRegistry, RootBeanDefinition, String) line: 219    
    AnnotationConfigUtils.registerAnnotationConfigProcessors(BeanDefinitionRegistry, Object) line: 164    
    AnnotationConfigUtils.registerAnnotationConfigProcessors(BeanDefinitionRegistry) line: 135    
    AnnotatedBeanDefinitionReader.<init>(BeanDefinitionRegistry, Environment) line: 87    
    AnnotatedBeanDefinitionReader.<init>(BeanDefinitionRegistry) line: 70    
    AnnotationConfigApplicationContext.<init>() line: 65    
    NativeConstructorAccessorImpl.newInstance0(Constructor<?>, Object[]) line: not available [native method]    
    NativeConstructorAccessorImpl.newInstance(Object[]) line: 62    
    DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 45    
    Constructor<T>.newInstance(Object...) line: 423    
    BeanUtils.instantiateClass(Constructor<T>, Object...) line: 146    
    BeanUtils.instantiateClass(Class<T>) line: 106    
    SpringApplication.createApplicationContext() line: 586    
    SpringApplication.run(String...) line: 321    
    SpringApplication.run(Class<?>[], String[]) line: 1245    
    SpringApplication.run(Class<?>, String...) line: 1233    
    Application.main(String[]) line: 51    
AnnotationConfigUtils注册容器级processors,源码截图
 
2,SpringApplication.prepareContext()
spring-boot启动添加不由容器管理的BeanFactoryPostProcessor,实例化后直接保存在AbstractApplicationContext.beanFactoryPostProcessors。BeanFactoryPostProcessor包括以下
org.springframework.boot.context.ConfigurationWarningsApplicationContextInitializer$ConfigurationWarningsPostProcessor
org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer$CachingMetadataReaderFactoryPostProcessor
org.springframework.boot.context.config.ConfigFileApplicationListener$PropertySourceOrderingPostProcessor
Thread [main] (Suspended (breakpoint at line 477 in AbstractApplicationContext))    
    AnnotationConfigApplicationContext(AbstractApplicationContext).addBeanFactoryPostProcessor(BeanFactoryPostProcessor) line: 477    
    ConfigurationWarningsApplicationContextInitializer.initialize(ConfigurableApplicationContext) line: 60    
    SpringApplication.applyInitializers(ConfigurableApplicationContext) line: 624    
    SpringApplication.prepareContext(ConfigurableApplicationContext, ConfigurableEnvironment, SpringApplicationRunListeners, ApplicationArguments, Banner) line: 364    
    SpringApplication.run(String...) line: 325    
    SpringApplication.run(Class<?>[], String[]) line: 1245    
    SpringApplication.run(Class<?>, String...) line: 1233    
    Application.main(String[]) line: 51    
注册完内部处理器类定义后再到用户级入口类定义注册,application是用户级的顶层类。
Thread [main] (Suspended (breakpoint at line 779 in DefaultListableBeanFactory))    
    DefaultListableBeanFactory.registerBeanDefinition(String, BeanDefinition) line: 779    
    AnnotationConfigApplicationContext(GenericApplicationContext).registerBeanDefinition(String, BeanDefinition) line: 324    
    BeanDefinitionReaderUtils.registerBeanDefinition(BeanDefinitionHolder, BeanDefinitionRegistry) line: 150    
    AnnotatedBeanDefinitionReader.doRegisterBean(Class<T>, Supplier<T>, String, Class<Annotation>[], BeanDefinitionCustomizer...) line: 246    
    AnnotatedBeanDefinitionReader.registerBean(Class<?>) line: 145    
    AnnotatedBeanDefinitionReader.register(Class<?>...) line: 135    
    BeanDefinitionLoader.load(Class<?>) line: 159    
    BeanDefinitionLoader.load(Object) line: 135    
    BeanDefinitionLoader.load() line: 127    
    SpringApplication.load(ApplicationContext, Object[]) line: 692    
    SpringApplication.prepareContext(ConfigurableApplicationContext, ConfigurableEnvironment, SpringApplicationRunListeners, ApplicationArguments, Banner) line: 381    
    SpringApplication.run(String...) line: 325    
    SpringApplication.run(Class<?>[], String[]) line: 1245    
    SpringApplication.run(Class<?>, String...) line: 1233    
    Application.main(String[]) line: 51    
 
3,AbstractApplicationContext.prepareBeanFactory()
准备容器beanFactory对象,添加两个必要beanPostProcessor到DefaultListableBeanFactory.beanPostProcessors,分别是org.springframework.context.support.ApplicationContextAwareProcessor和org.springframework.context.support.ApplicationListenerDetector,用于后面其它对象实例化时调用,每个beanPostProcessor有不能的增加功能。DefaultListableBeanFactory.createBean()执行时在适当时执行beanPostProcessors对应方法。参照文档Customizing beans using a BeanPostProcessor
Thread [main] (Suspended (breakpoint at line 849 in AbstractBeanFactory))    
    owns: Object  (id=74)    
    DefaultListableBeanFactory(AbstractBeanFactory).addBeanPostProcessor(BeanPostProcessor) line: 849    
    AnnotationConfigApplicationContext(AbstractApplicationContext).prepareBeanFactory(ConfigurableListableBeanFactory) line: 633    
    AnnotationConfigApplicationContext(AbstractApplicationContext).refresh() line: 517    
    SpringApplication.refresh(ApplicationContext) line: 750    
    SpringApplication.refreshContext(ConfigurableApplicationContext) line: 386    
    SpringApplication.run(String...) line: 327    
    SpringApplication.run(Class<?>[], String[]) line: 1245    
    SpringApplication.run(Class<?>, String...) line: 1233    
    Application.main(String[]) line: 51    
 
 
4,AbstractApplicationContext.invokeBeanFactoryPostProcessors()
invokeBeanFactoryPostProcessors()方法在AnnotationConfigApplicationContext(AbstractApplicationContext).refresh()被调用。实例化注册在DefaultListableBeanFactory.beanDefinitionNames容器级BeanFactoryPostProcessors如org.springframework.context.annotation.internalConfigurationAnnotationProcessor等。参照文档Customizing configuration metadata with aBeanFactoryPostProcessor执行所有BeanFactoryPostProcessor.postProcessBeanFactory()如下图:
注册org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory
Thread [main] (Suspended (breakpoint at line 779 in DefaultListableBeanFactory))    
    owns: Object  (id=83)    
    DefaultListableBeanFactory.registerBeanDefinition(String, BeanDefinition) line: 779    
    SharedMetadataReaderFactoryContextInitializer$CachingMetadataReaderFactoryPostProcessor.register(BeanDefinitionRegistry) line: 90    
    SharedMetadataReaderFactoryContextInitializer$CachingMetadataReaderFactoryPostProcessor.postProcessBeanDefinitionRegistry(BeanDefinitionRegistry) line: 83    
    PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory, List<BeanFactoryPostProcessor>) line: 69    
    AnnotationConfigApplicationContext(AbstractApplicationContext).invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory) line: 686    
    AnnotationConfigApplicationContext(AbstractApplicationContext).refresh() line: 524    
    SpringApplication.refresh(ApplicationContext) line: 750    
    SpringApplication.refreshContext(ConfigurableApplicationContext) line: 386    
    SpringApplication.run(String...) line: 327    
    SpringApplication.run(Class<?>[], String[]) line: 1245    
    SpringApplication.run(Class<?>, String...) line: 1233    
    Application.main(String[]) line: 51   

实例化ConfigurationClassPostProcessor,这是BeanFactoryPostProcessor

Thread [main] (Suspended (modification of field sourceExtractor in ConfigurationClassPostProcessor))    
    owns: ConcurrentHashMap<K,V>  (id=2116)    
    owns: Object  (id=2117)    
    ConfigurationClassPostProcessor.<init>() line: 95    
    NativeConstructorAccessorImpl.newInstance0(Constructor<?>, Object[]) line: not available [native method]    
    NativeConstructorAccessorImpl.newInstance(Object[]) line: 62    
    DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 45    
    Constructor<T>.newInstance(Object...) line: 423    
    BeanUtils.instantiateClass(Constructor<T>, Object...) line: 146    
    CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition, String, BeanFactory) line: 88    
    DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).instantiateBean(String, RootBeanDefinition) line: 1235    
    DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 1142    
    DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 542    
    DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 498    
    DefaultListableBeanFactory(AbstractBeanFactory).lambda$doGetBean$0(String, RootBeanDefinition, Object[]) line: 305    
    2099051403.getObject() line: not available    
    DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory<?>) line: 233    
    DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class<T>, Object[], boolean) line: 303    
    DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class<T>) line: 198    
    PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory, List<BeanFactoryPostProcessor>) line: 88    
    AnnotationConfigApplicationContext(AbstractApplicationContext).invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory) line: 686    
    AnnotationConfigApplicationContext(AbstractApplicationContext).refresh() line: 524    
    SpringApplication.refresh(ApplicationContext) line: 750    
    SpringApplication.refreshContext(ConfigurableApplicationContext) line: 386    
    SpringApplication.run(String...) line: 327    
    SpringApplication.run(Class<?>[], String[]) line: 1245    
    SpringApplication.run(Class<?>, String...) line: 1233    
    Application.main(String[]) line: 51    
如果使用kafka配置,注册kafka处理器类定义,KafkaListenerAnnotationBeanPostProcessor对象定义注册在DefaultListableBeanFactory.registerBeanDefinition(),使用名称为KafkaListenerConfigUtils.KAFKA_LISTENER_ANNOTATION_PROCESSOR_BEAN_NAME,如下列stack:
Thread [main] (Suspended (breakpoint at line 779 in DefaultListableBeanFactory))    
    owns: Object  (id=130)    
    DefaultListableBeanFactory.registerBeanDefinition(String, BeanDefinition) line: 779    
    ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod(BeanMethod) line: 262    
    ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClass, ConfigurationClassBeanDefinitionReader$TrackedConditionEvaluator) line: 141 
    ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(Set<ConfigurationClass>) line: 117    
    ConfigurationClassPostProcessor.processConfigBeanDefinitions(BeanDefinitionRegistry) line: 320    
    ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(BeanDefinitionRegistry) line: 229    
    PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(Collection<BeanDefinitionRegistryPostProcessor>, BeanDefinitionRegistry) line: 271    
    PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory, List<BeanFactoryPostProcessor>) line: 94    
    AnnotationConfigApplicationContext(AbstractApplicationContext).invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory) line: 686    
    AnnotationConfigApplicationContext(AbstractApplicationContext).refresh() line: 524    
    SpringApplication.refresh(ApplicationContext) line: 750    
    SpringApplication.refreshContext(ConfigurableApplicationContext) line: 386    
    SpringApplication.run(String...) line: 327    
    SpringApplication.run(Class<?>[], String[]) line: 1245    
    SpringApplication.run(Class<?>, String...) line: 1233    
    Application.main(String[]) line: 51    
 
5,AbstractApplicationContext.registerBeanPostProcessors()
实例化和添加更多beanProcessor,包括实例化DefaultListableBeanFactory时注册在DefaultListableBeanFactory.beanDefinitionNames的org.springframework.context.annotation.internalAutowiredAnnotationProcessor等processor。部分beanProcessor如下
org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor@34448e6c 
org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor@435ce306
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor@907f2b7
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor@1ce93c18
org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor@60e9df3c
 
6,AbstractApplicationContext).finishBeanFactoryInitialization() 
实例化余下非延时加载单列对象,单列对象保存在DefaultSingletonBeanRegistry.singletonObjects
首先实例化LoadTimeWeaverAware类,如LocalContainerEntityManagerFactoryBean类实例化,源码如下
其他类实例化源码如下
Thread [main] (Suspended (breakpoint at line 64 in MethodKafkaListenerEndpoint))    
    owns: ConcurrentHashMap<K,V>  (id=86)    
    owns: Object  (id=87)    
    MethodKafkaListenerEndpoint<K,V>.setBean(Object) line: 64    
    KafkaListenerAnnotationBeanPostProcessor<K,V>.processListener(MethodKafkaListenerEndpoint<?,?>, KafkaListener, Object, Object, String) line: 377    
    KafkaListenerAnnotationBeanPostProcessor<K,V>.processKafkaListener(KafkaListener, Method, Object, String) line: 340    
    KafkaListenerAnnotationBeanPostProcessor<K,V>.postProcessAfterInitialization(Object, String) line: 270    
    DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyBeanPostProcessorsAfterInitialization(Object, String) line: 435    
    DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initializeBean(String, Object, RootBeanDefinition) line: 1721    
    DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 581    
    DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 498    
    DefaultListableBeanFactory(AbstractBeanFactory).lambda$doGetBean$0(String, RootBeanDefinition, Object[]) line: 305    
    2099051403.getObject() line: not available    
    DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory<?>) line: 233    
    DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class<T>, Object[], boolean) line: 303    
    DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class<T>) line: 198    
    CommonAnnotationBeanPostProcessor.autowireResource(BeanFactory, CommonAnnotationBeanPostProcessor$LookupElement, String) line: 512    
    CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor$LookupElement, String) line: 483    
    CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(Object, String) line: 617    
    CommonAnnotationBeanPostProcessor$ResourceElement(InjectionMetadata$InjectedElement).inject(Object, String, PropertyValues) line: 172    
    InjectionMetadata.inject(Object, String, PropertyValues) line: 89    
    CommonAnnotationBeanPostProcessor.postProcessPropertyValues(PropertyValues, PropertyDescriptor[], Object, String) line: 317    
    DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, RootBeanDefinition, BeanWrapper) line: 1353    
    DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 579    
    DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 498    
    DefaultListableBeanFactory(AbstractBeanFactory).lambda$doGetBean$0(String, RootBeanDefinition, Object[]) line: 305    
    2099051403.getObject() line: not available    
    DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory<?>) line: 233    
    DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class<T>, Object[], boolean) line: 303    
    DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class<T>) line: 198    
    CommonAnnotationBeanPostProcessor.autowireResource(BeanFactory, CommonAnnotationBeanPostProcessor$LookupElement, String) line: 512    
    CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor$LookupElement, String) line: 483    
    CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(Object, String) line: 617    
    CommonAnnotationBeanPostProcessor$ResourceElement(InjectionMetadata$InjectedElement).inject(Object, String, PropertyValues) line: 172    
    InjectionMetadata.inject(Object, String, PropertyValues) line: 89    
    CommonAnnotationBeanPostProcessor.postProcessPropertyValues(PropertyValues, PropertyDescriptor[], Object, String) line: 317    
    DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, RootBeanDefinition, BeanWrapper) line: 1353    
    DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 579    
    DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 498    
    DefaultListableBeanFactory(AbstractBeanFactory).lambda$doGetBean$0(String, RootBeanDefinition, Object[]) line: 305    
    2099051403.getObject() line: not available    
    DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory<?>) line: 233    
    DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class<T>, Object[], boolean) line: 303    
    DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 193    
    DefaultListableBeanFactory.preInstantiateSingletons() line: 747    
    AnnotationConfigApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 861    
    AnnotationConfigApplicationContext(AbstractApplicationContext).refresh() line: 542    
    SpringApplication.refresh(ApplicationContext) line: 750    
    SpringApplication.refreshContext(ConfigurableApplicationContext) line: 386    
    SpringApplication.run(String...) line: 327    
    SpringApplication.run(Class<?>[], String[]) line: 1245    
    SpringApplication.run(Class<?>, String...) line: 1233    
    Application.main(String[]) line: 51   
 
7,一个普通Spring-framework应用程序实例化的类对象
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalRequiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.annotation.internalPersistenceAnnotationProcessor
application
org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory
producer
kafkaConsumerConfig
kafkaProducerConfig
orderService
transactionDataSourceConfiguration
transactionService
userDataSourceConfiguration
userService
org.springframework.kafka.annotation.KafkaBootstrapConfiguration
org.springframework.kafka.config.internalKafkaListenerAnnotationProcessor
org.springframework.kafka.config.internalKafkaListenerEndpointRegistry
kafkaListenerContainerFactory
consumerFactory
consumerConfigs
producerFactory
producerConfigs
kafkaTemplate
transactionDataSourceProperties
transactionDataSource
transactionEntityManagerFactory
transactionManager
org.springframework.data.jpa.repository.config.JpaRepositoryConfigExtension#0
emBeanDefinitionRegistrarPostProcessor
jpaMappingContext
jpaContext
transactionRepository
userDataSourceProperties
userDataSource
userEntityManagerFactory
userTransactionManager
userRepository
updatesAppliedRepository
org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration
org.springframework.transaction.config.internalTransactionAdvisor
transactionAttributeSource
transactionInterceptor
org.springframework.transaction.config.internalTransactionalEventListenerFactory
org.springframework.jms.annotation.JmsBootstrapConfiguration
org.springframework.jms.config.internalJmsListenerAnnotationProcessor
org.springframework.jms.config.internalJmsListenerEndpointRegistry
queue
org.springframework.boot.autoconfigure.AutoConfigurationPackages
org.springframework.aop.config.internalAutoProxyCreator
org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration
org.springframework.boot.autoconfigure.condition.BeanTypeRegistry
propertySourcesPlaceholderConfigurer
org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration
jsonComponentModule
org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration
mbeanExporter
objectNamingStrategy
mbeanServer
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$CglibAutoProxyConfiguration
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration
org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration
spring.jta-org.springframework.boot.autoconfigure.transaction.jta.JtaProperties
org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor
org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.store
org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration
org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration
persistenceExceptionTranslationPostProcessor
org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration
spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties
org.springframework.boot.autoconfigure.jms.activemq.ActiveMQConnectionFactoryConfiguration
jmsConnectionFactory
org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration$MessagingTemplateConfiguration
jmsMessagingTemplate
org.springframework.boot.autoconfigure.jms.JmsAnnotationDrivenConfiguration
jmsListenerContainerFactoryConfigurer
jmsListenerContainerFactory
org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration
spring.jms-org.springframework.boot.autoconfigure.jms.JmsProperties
org.springframework.boot.autoconfigure.kafka.KafkaAnnotationDrivenConfiguration
kafkaListenerContainerFactoryConfigurer
org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration
spring.transaction-org.springframework.boot.autoconfigure.transaction.TransactionProperties
org.springframework.orm.jpa.SharedEntityManagerCreator#0
org.springframework.orm.jpa.SharedEntityManagerCreator#1

Spring-framework应用程序启动loadtime源码分析笔记(一)的更多相关文章

  1. Spring-framework应用程序启动loadtime源码分析笔记(三)——@KafkaListener

    org.springframework.context.annotation.ConfigurationClassParser.getConfigurationClasses()读所有@Configu ...

  2. Spring-framework应用程序启动loadtime源码分析笔记(二)——@Transactional

    @Transactional标识类或方法,使方法被执行时使用事务方式执行,这里只讨论PROXY方法增强方法.使用@EnableTransactionManagement,默认model=AdviceM ...

  3. 涨姿势:Spring Boot 2.x 启动全过程源码分析

    目录 SpringApplication 实例 run 方法运行过程 总结 上篇<Spring Boot 2.x 启动全过程源码分析(一)入口类剖析>我们分析了 Spring Boot 入 ...

  4. Spring Boot 2.x 启动全过程源码分析

    Spring Boot 2.x 启动全过程源码分析 SpringApplication 实例 run 方法运行过程 上面分析了 SpringApplication 实例对象构造方法初始化过程,下面继续 ...

  5. Spring Boot 2.x 启动全过程源码分析(上)入口类剖析

    Spring Boot 的应用教程我们已经分享过很多了,今天来通过源码来分析下它的启动过程,探究下 Spring Boot 为什么这么简便的奥秘. 本篇基于 Spring Boot 2.0.3 版本进 ...

  6. Spring Boot Dubbo 应用启停源码分析

    作者:张乎兴 来源:Dubbo官方博客 背景介绍 Dubbo Spring Boot 工程致力于简化 Dubbo | grep tid | grep -v "daemon" tid ...

  7. Spring Boot REST(二)源码分析

    Spring Boot REST(二)源码分析 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html) SpringBoot RE ...

  8. Spring第四天,BeanPostProcessor源码分析,彻底搞懂IOC注入及注解优先级问题!

  9. worker启动executor源码分析-executor.clj

    在"supervisor启动worker源码分析-worker.clj"一文中,我们详细讲解了worker是如何初始化的.主要通过调用mk-worker函数实现的.在启动worke ...

随机推荐

  1. 20155219&20155224 《信息安全系统设计基础》实验一 开发环境的熟悉

    实验内容 实验两人一组,最多三人一组 可以使用自己的笔记本,也可以使用实验室台式机 使用实验箱作为超级终端. 实验中学到的知识点 交叉编译 宿主机与目标机 NFS 超级终端 file命令 实验步骤 实 ...

  2. loadrunner如何对mysql进行增删改查

    libraries.zip  地址:链接:https://pan.baidu.com/s/1kIZ2aBCOFSJ9l727MxgIKQ 密码:40vq *   说明一下,因为 lr 有很多库文件都没 ...

  3. 20155208徐子涵 2016-2017-2 《Java程序设计》第3周学习总结

    20155208徐子涵 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 认识对象 4.1 类与对象 •对象(Object):存在的具体实体,具有明确的 ...

  4. Python逻辑运算

    一.运算符种类 1.比较运算符 > ,< , >= ,<= , != , == 2.赋值运算符 =, +=,-=,*=,/=,**=,%= 3.成员运算符 in not in ...

  5. Windows下的matplotlib画图中文显示设置

    一.在测试matplotlib时遇到X轴中文字符不显示的问题,参考网上 源代码如下 from matplotlib import pyplot as plt import random import ...

  6. day29akka

    PS:AKKA之前要实现并发编程,通常要借用netty框架,现在如果又要高并发又要分布式就使用akka框架这个akka在客户端和服务端每一端都相当于一个actor,尤其是服务端需要一个总管进行管理 P ...

  7. navicat连接oracle方法及其安装包

    Navicat破解版下载(安装好之后,点击执行最后一个破解文件即可) 链接: https://pan.baidu.com/s/1pMpVwfT 密码: vrt6 连接oracle还需要下载以下文件,o ...

  8. IE浏览器兼容问题

    文件兼容性用于定义让IE如何编译你的网页.此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式. 为了帮助确保你的网页在所有未来的IE版本都有一致的外观,IE8引入 ...

  9. YAML Class ID Reference

    Classes Ordered by ID Number ID Class 1 GameObject 2 Component 3 LevelGameManager 4 Transform 5 Time ...

  10. 使用apache cxf实现webservice服务

    1.在idea中使用maven新建web工程并引入spring mvc,具体可以参考https://www.cnblogs.com/laoxia/p/9311442.html; 2.在工程POM文件中 ...