Spring bean 依赖注入情况总结

本文深入解析Spring框架中bean依赖注入的四种主要方式:构造函数参数、使用@Autowired注解的成员函数参数、使用@Value注解的成员属性以及使用@Autowired注解的成员属性。通过实例代码展示了不同依赖注入形式的应用场景及其实现细节。

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

Spring中,一个bean对外部的依赖主要有以下几种情况 :

编号依赖形式简介依赖注入过程的要点
1构造函数参数构造函数参数即使不使用任何注解也会被作为bean依赖处理AbstractAutowireCapableBeanFactory#autowireConstructor
2使用@Autowired注解的成员函数的参数用于注入其他bean,一般常见的基于public set方法的属性依赖AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement
3使用@Value注解的成员属性一般用于注入固定值或者来自外部配置的值AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement
4使用@Autowired注解的成员属性用于注入bean,一般常见的属性依赖,该属性可以不使用public修饰符AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement

代码举例 :

@Controller
public class HomeController {

    // 情况 1
    ServletRequest constructorRequest;
    //// 注意这是一个构造函数,其参数 request 上没有使用任何注解
    public HomeController(ServletRequest request) {
        constructorRequest = request;
    }

    // 情况2
    //// 注意该属性上没有使用任何注解,该属性通过 setRequest 设置
    ServletRequest methodRequest;
    @Autowired
    public void setRequest(ServletRequest request) {
        this.methodRequest = request;
    }

    // 情况3
    @Value("${city}")
    String city;
    
    // 情况4
    @Autowired
    ServletRequest fieldRequest;

   // 其他代码省略
   // ...
}

参考文章

Spring BeanPostProcessor : AutowiredAnnotationBeanPostProcessor
Spring 依赖解决过程分析
Spring bean 构造函数参数依赖注入分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值