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. pat--7-11 出栈序列的合法性(25 分)

    7-11 出栈序列的合法性(25 分) 给定一个最大容量为 M 的堆栈,将 N 个数字按 1, 2, 3, ..., N 的顺序入栈,允许按任何顺序出栈,则哪些数字序列是不可能得到的?例如给定 M=5 ...

  2. Cloth

    https://www.youtube.com/watch?v=2zd1AI198I8Blender Tutorial For Beginners: Cloth Napkin 建模, 1透明玻璃杯, ...

  3. 安装排错 max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

    https://blog.csdn.net/cookzrk/article/details/80179006 转载:https://my.oschina.net/u/2510243/blog/8105 ...

  4. 4.input()

    >>> help(input) Help on built-in function input in module builtins: input(prompt=None, /) R ...

  5. golang xml parent node add attribute without struct

    question: golang  encoding/xml: foo>bar,attr - foo ignored solution: you can replace output resul ...

  6. 在Android上运行Java和C程序

    在linux上运行java程序,直接用javac编译,再用java启动虚拟机运行就行了.但是在Android上,由于虚拟机和pc端的不同,所以操作方法也是不一样的.下面介绍Android上运行Hell ...

  7. MySQL Lock--INSERT加锁规则

    Insert操作加锁规则 1.INSERT操作会对新插入的记录加行锁(ROW LOCK)+排他锁(X LOCK),不会产生任何GAP锁和Next-Key锁 2.在插入记录前,会向插入记录所在位置申请意 ...

  8. Nio使用Selector客户端与服务器的通信

    使用NIO的一个最大优势就是客户端于服务器自己的不再是阻塞式的,也就意味着服务器无需通过为每个客户端的链接而开启一个线程.而是通过一个叫Selector的轮循器来不断的检测那个Channel有消息处理 ...

  9. Scalable MySQL Cluster with Master-Slave Replication, ProxySQL Load Balancing and Orchestrator

    MySQL is one of the most popular open-source relational databases, used by lots of projects around t ...

  10. DevExpress使用方法GridControl总结

    1.隐藏最上面的GroupPanel gridView1.OptionsView.ShowGroupPanel=false; 2.得到当前选定记录某字段的值 sValue=Table.Rows[gri ...