Spring bean 依赖注入情况总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/andy_zhang2007/article/details/88368901

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

猜你喜欢

转载自blog.csdn.net/andy_zhang2007/article/details/88368901