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);
}