代码拉取完成,页面将自动刷新
同步操作将从 turnon/blog 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
title: Spring IoC 依赖来源
date: 2022-12-20 20:33:51
categories:
- Java
- 框架
- Spring
- Spring核心
tags:
- Java
- 框架
- Spring
- IOC
- 依赖注入
permalink: /pages/a5f257/
查找来源
来源 | 配置元数据 |
---|---|
Spring BeanDefinition | <bean id ="user" class="xxx.xxx.User"> |
@Bean public User user() {...} |
|
BeanDefinitionBuilder |
|
单例对象 | API 实现 |
Spring 內建 BeanDefintion
Bean 名称 | Bean 实例 | 使用场景 |
---|---|---|
org.springframework.context.annotation.internalConfigurationAnnotationProcessor | ConfigurationClassPostProcessor 对象 | 处理 Spring 配置类 |
org.springframework.context.annotation.internalAutowiredAnnotationProcessor | AutowiredAnnotationBeanPostProcessor 对象 | 处理 @Autowired 以及 @Value 注解 |
org.springframework.context.annotation.internalCommonAnnotationProcessor | CommonAnnotationBeanPostProcessor 对象 | (条件激活)处理 JSR-250 注解,如 @PostConstruct 等 |
org.springframework.context.event.internalEventListenerProcessor | EventListenerMethodProcessor 对象 | 处理标注 @EventListener 的 Spring 事件监听方法 |
Spring 內建单例对象
Bean 名称 | Bean 实例 | 使用场景 |
---|---|---|
environment | Environment 对象 | 外部化配置以及 Profiles |
systemProperties | java.util.Properties 对象 | Java 系统属性 |
systemEnvironment | java.util.Map 对象 | 操作系统环境变量 |
messageSource | MessageSource 对象 | 国际化文案 |
lifecycleProcessor | LifecycleProcessor 对象 | Lifecycle Bean 处理器 |
applicationEventMulticaster | ApplicationEventMulticaster 对象 | Spring 事件广播器 |
来源 | 配置元数据 |
---|---|
Spring BeanDefinition | <bean id ="user" class="xxx.xxx.User"> |
@Bean public User user() {...} |
|
BeanDefinitionBuilder |
|
单例对象 | API 实现 |
非 Spring 容器管理对象 |
来源 | Spring Bean 对象 | 生命周期管理 | 配置元信息 | 使用场景 |
---|---|---|---|---|
Spring BeanDefinition | 是 | 是 | 有 | 依赖查找、依赖注入 |
单体对象 | 是 | 否 | 无 | 依赖查找、依赖注入 |
Resolvable Dependency | 否 | 否 | 无 | 依赖注入 |
BeanDefinition
BeanDefinitionRegistry#registerBeanDefinition
SingletonBeanRegistry#registerSingleton
ConfigurableListableBeanFactory#registerResolvableDependency
注入和查找的依赖来源是否相同?
否,依赖查找的来源仅限于 Spring BeanDefinition
以及单例对象,而依赖注入的来源还包括 Resolvable Dependency 以及 @Value
所标注的外部化配置
单例对象能在 IoC 容器启动后注册吗?
可以的,单例对象的注册与 BeanDefinition
不同,BeanDefinition
会被 ConfigurableListableBeanFactory#freezeConfiguration()
方法影响,从而冻结注册,单例对象则没有这个限制。
Spring 依赖注入的来源有哪些?
BeanDefinition
@Value
外部化配置此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。