详解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")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,359评论 19 139
  • 来源:关于Spring IOC (DI-依赖注入)你需要知道的一切作者:zejian Dao层(AccountDa...
    杨井阅读 10,689评论 0 27
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,054评论 6 342
  • 如下是整篇文章的结构,所需阅读时间大约20min Spring简介 Spring框架由Rod Johnson开发,...
    逆风飞行1226阅读 4,375评论 0 15
  • Spring简介 spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版。Spri...
    qiuqiu_hz阅读 4,675评论 0 15