22自动装配-方法构造器位置的自动装配

Posted grand-jon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了22自动装配-方法构造器位置的自动装配相关的知识,希望对你有一定的参考价值。

22、自动装配-方法、构造器位置的自动装配

22.1 @Autowired 标注在方法上

  • 标注在方法上,Spring容器创建当前对象,就会调用方法,完成赋值
  • 方法使用的参数,自定义类型的值从IOC容器中获取
@Autowired
public void setCar(Car car) {
    this.car = car;
}

22.2 @Autowired 标注在构造器

  • 默认加在IOC容器中的组件,容器启动会调用无参构造器创建对象,再进行赋值操作
  • 构造器也是从IOC容器中获取
  • 如果组件只有一个有参构造器,这个有参构造器的@Autowired可以省略,也是自动从IOC容器中获取
@Autowired
public Boss(Car car) {
    this.car = car;
    System.out.println("Boss 的有参构造器...");
}

22.3 @Autowired 标注在参数上

  • 参数也是从IOC容器中获取
  • @Bean+方法参数;参数从容器中获取,可以省略@Autowired
public Boss(@Autowired Car car) {
    this.car = car;
    System.out.println("Boss 的有参构造器...");
}
@Bean
public Color color(@Autowired Car car) {
    return new Color(car);
}

以上是关于22自动装配-方法构造器位置的自动装配的主要内容,如果未能解决你的问题,请参考以下文章

15spring注解学习(自动装配)——@Autowired标注在方法构造器和参数位置上

Junit Mockito NullPointerException for Mock 用于基于构造函数的自动装配

Spring5 解决Bean在自动装配时的歧义性

Spring 属性依赖注入

Spring5依赖注入常用的三种方法:构造注入Setter注入自动装配

Spring实战之处理自动装配的歧义性