详解Spring@AutoWired多种方式的依赖注入——List,Map类型

详解Spring@AutoWired多种方式的依赖注入

在Spring框架进行bean对象依赖注入时,@Autowired利用可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。
@Autowired可标注在成员变量,也可以标注在成员变量的set方法上,以及类得构造函数上。

  • Spring会直接将UserDao类型的唯一一个bean赋值给userDao这个成员变量:
@Autowired
UserDao userDao;
  • Spring会调用setUserDao方法来将UserDao类型的唯一一个bean装配到userDao这个属性。
@Autowired
UserDao setUserDao(UserDao userDao){
    
    
    this.userDao = userDao;
}
  • 类似于set方法,标注在构造函数上。
@Autowired
Service(UserDao userDao){
    
    
    this.userDao = userDao;
}

对于标注在成员变量上的方式,通常的做法是标注在单个类型的变量上,Spring框架提供了强大的DI能力能够实现对Collection类型的自动注入。

List类型自动注入

当程序中定义了多个相同类型的bean时,如

public interface Converter {
    
    

}

public class BookConverter implements Converter {
    
    

}

public class CustomerConverter implements Converter {
    
    

}

public class AuthorConverter implements Converter {
    
    

}

在需要注入以上3个bean的类中声明

List<Converter> converters;

Spring会自动从容器中取出这三个相同类型的bean装配到List类型的converters中,从而简化了依赖注入的过程。

Map类型自动注入

在需要注入以上3个bean的类中声明

Map<String,Converter> converters;

此时,Spring会自动从容器中取出这三个相同类型的bean以及bean的名称,注入到Map类型的converters中,此时该map得key对应为bean的名称,value则为对应bean对象。
程序中可使用如下方式获取对象bean

converter.get("BookConverter")

猜你喜欢

转载自blog.csdn.net/qq_43842093/article/details/134983329