Spring加载Bean流程 注解方式
2021-07-26 14:23:16 1 举报
Spring加载Bean流程 注解方式
作者其他创作
大纲/内容
4
AnnotatedGenericBeanDefinition abd = new AnnotatedGenericBeanDefinition(beanClass);
1、内部变量registry赋值
org.springframework.context.event.internalEventListenerFactory
AnnotationConfigApplicationContext
AbstractBeanFactory
AnnotationConfigUtils.processCommonDefinitionAnnotations(abd);
3、初始化Bean class路径扫描器
6、处理通用注解
1、设置基本属性,启动时间,激活状态
2、构建默认的BeanName buildDefaultBeanName 默认为类名小驼峰
2、检查是否跳过注册Bean
AbstractBeanDefinition
1、依赖排序比较设置为注解依赖排序AnnotationAwareOrderComparator
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
1、调用构造函数
1、Lazy
1、定义AnnotatedGenericBeanDefinition
span style=\"font-size: inherit;\
5、生成BeanName
初始化Bean class路径扫描器AnnotationConfigApplicationContext类中this.scanner = new ClassPathBeanDefinitionScanner(this);
JSR 250规范开启
6、EventListenerFactory
1、doRegisterBean
abd.setInstanceSupplier(supplier)
初始化Bean阅读器AnnotationConfigApplicationContext类中 this.reader = new AnnotatedBeanDefinitionReader(this);
添加好的后置处理器无处接收?已经注册到Registry
10、Scope代理模式
无参构造函数,无具体实现直接返回
1、配置注解处理器
2、注入注解处理器
2、注册ManagedBean注解类型Filter
3、注册配置类register
2、初始化beanFactory
1
该方法会为Component提供默认过滤器,并且会隐试的注册被@Component注解修饰的注解包括@Repository,@Service,@Controller
3
org.springframework.context.event.internalEventListenerProcessor
3、注册Named注解类型Filter
AbstractApplicationContext
1、setBeanClass
1、定义注解生成Bean定义
1、构造函数
8、customizers
2、initPropertySources在上下文环境中初始化配置文件属性
4、JPA 处理器
7、qualifiers
1、注册beanregisterBean
org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor
2
4、获取Bean的Scope
1、refreshBeanFactory
ScopeMetadata scopeMetadata = this.scopeMetadataResolver.resolveScopeMetadata(abd);
3、忽略接口依赖注入BeanFactoryAware
2、初始化Bean阅读器
1、准备刷新上下文环境,获取属性,验证必要的prepareRefresh
AnnotatedBeanDefinitionReader
GenericApplicationContext
1、是否有注解声明BeanName determineBeanNameFromAnnotation
AnnotatedGenericBeanDefinition
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
3、注册注解配置后置处理器
2、内部变量conditionEvaluator赋值
读取Spring默认六大后置处理器Set<BeanDefinitionHolder>
3、设置资源加载器setResourceLoader
2、Primary
3、JSR 250规范
AbstractAutowireCapableBeanFactory
5、Description
3、设置环境变量setEnvironment
4、refresh IOC刷新接口
3、校验必须的参数配置是否都配置
示例为内部仅一个User类的加载过程AnnotationConfigApplicationContext factory = new AnnotationConfigApplicationContext(UserConfig.class);
3、设置创建bean之后的回调
AnnotationConfigApplicationContext(Class<?>... componentClasses)
ClassPathBeanDefinitionScanner
4、忽略接口依赖注入BeanClassLoaderAware
11、注册BeanDefined
2、getBeanFactory
4、Role
调用父类构造函数
ClassPathScanningCandidateComponentProvider类中 registerDefaultFilters
2、设置策略为:ContextAnnotationAutowireCandidateResolver
AnnotationMetadata.introspect(beanClass)
1、获取环境变量
3、DependsOn
org.springframework.context.annotation.internalCommonAnnotationProcessor
JPA开启
2、注册默认过滤器
1、注册Component注解类型Filter
9、定义BeanDefinitionHolder
2、获取元数据
调用AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry);
2、this() 无参构造方法
2、忽略接口依赖注入BeanNameAware
5、@EventListener
0 条评论
回复 删除
下一页