Spring四种注入方式(不要再看错误的文章了)

本文详细解析了Spring的四种注入方式,纠正了关于Spring注入的常见误解。通过源码分析,解释了Spring如何创建bean并管理其生命周期。内容包括:构造器注入、按类型注入、按名称注入和字段注入。通过实例展示了如何通过BeanFactoryPostProcessor在bean初始化前进行操作,并详细阐述了每种注入方式的适用场景和工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring四种注入方式


前言:

首先我看了很多博客 或者视频 对于Spring的注入方式理解其实都是错误的. 或者有问题的,
只有当你深入源码的时候你才会发现 官网的意图是怎样的

首先 官网介绍的输入模式有4种
在Spring的源码中有这样一段
在这里插入图片描述
首先是默认的no 然后是 名字注入 类型注入 构造器注入
其中名字注入和构造器注入是有很大误会的


Spring容器是如何创建一个bean的

下面的内容看不懂 可以不用太深入 随便看看就好
为什么要看这个流程呢? 我需要给你演示几种注入方式 真正的官方说明
首先在Spring环境下启动应用 Spring扫描带@Component @Service…类
一开始他并不会为这些类去创建实例对象
在Spring环境中
在这里插入图片描述
在这里插入图片描述
这个List 会保存 所有 由Spring 管理的Bean的名字 后面有大作用
在这里插入图片描述
Spring 在加载的时候会把所有需要由Spring容器管理的类 封装成Spring认识的Bean对象 就是这个BeanDefinition
看一下下面这个类 就是Spring在创建bean对象时候对 原类进行管理封装 我把注释都删了 想看的 可以去看看源码 其中有几个方法应该是见过的
比如void setScope(@Nullable String scope); isSingleton() 是否为单例呀



package org.springframework.beans.factory.config;

import org.springframework.beans.BeanMetadataElement;
import org.springframework.beans.MutablePropertyValues;
import org.springframework.core.AttributeAccessor;
import org.springframework.lang.Nullable;

public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement {

	String SCOPE_SINGLETON = ConfigurableBeanFactory.SCOPE_SINGLETON;

	String SCOPE_PROTOTYPE = ConfigurableBeanFactory.SCOPE_PROTOTYPE;


	int ROLE_APPLICATION = 0;

	int ROLE_SUPPORT = 1;
	int ROLE_INFRASTRUCTURE = 2;

	void setParentName(@Nullable String parentName);


	@Nullable
	String getParentName();

	void setBeanClassName(@Nu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值