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. Readability Assessment for Text Simplification -paper

    https://pdfs.semanticscholar.org/e43a/3c3c032cf3c70875c4193f8f8818531857b2.pdf 1.introduction在Brazil ...

  2. Node.js内置的文件系统模块(fs)

    异步读取文件 按照js的标准,异步读取一个文本文件的格式如下: 'use strict' const fs = require('fs') fs.readFile('test.txt', 'utf-8 ...

  3. rsync命令 续集 、linux系统日志、screen工具

    1.rsync 通过服务进行监听同步: 开启服务:rsync --daemon  (默认开启873端口) 需要编辑配制文件:/etc/rsyncd.conf port=873log file=/var ...

  4. C# 8.0、.NET Framework 4.8与NET Standard 2.1的一个说明

    C# 8.0..NET Framework 4.8与NET Standard 2.1的一个说明 https://blog.csdn.net/sD7O95O/article/details/846098 ...

  5. ubuntu设置静态ip后不能上网

    加上下面的配置,然后重启 sudo vim /etc/resolvconf/resolv.conf.d/base nameserver 223.5.5.5nameserver 8.8.8.8names ...

  6. 【BZOJ3672】【UOJ#6】【NOI2014】随机数生成器

    暴力出奇迹 原题: 2≤N,M≤5000 0≤Q≤50000 0≤a≤300 0≤b,c≤108 0≤x0<d≤108 1≤ui,vi≤N×M 恩首先容易看出来这个棋盘直接模拟搞出来就行了,不用 ...

  7. nginx http2 push 试用

    nginx 已经很早就支持http2,今天证书过期,重新申请了一个,同时测试下http2 的push 功能 环境准备 证书 这个结合自己的实际去申请,我使用免费的letsencrypt,支持泛域名证书 ...

  8. android设备兼容性

    原文地址:http://developer.android.com/guide/practices/compatibility.html android被设计成能够在多种不同的设备上执行的系统,为了达 ...

  9. REPL

    REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应. ...

  10. 编译opencv python

    1, 下载并且安装python2.7 + numpy 2,运行cmakegui打开opencv.应该要显示如下信息: Python 2: Interpreter: C:/Python27/python ...