Spring 5 Recipes: A Problem-Solution Approach 目前无人评价
读书笔记 2-3. Use POJO References and Autowiring to Interact with Other POJOs
小土豆

本页正文第 2 自然段里的第二句

This allows Spring to autowire the property with the sequenceDao bean (i.e., the SequenceDaoImpl class).

我们需要注意到作者此处对于 @Autowired 注解标记的变量 sequenceDao 的自动装配(autowire)的原理的表述有歧义。这句话容易让读者误以为 Spring 在遇到 @Autowired 注解标记的变量时,使用匹配变量名的方式进行自动装配,比如在 IoC 容器里所有实例化的 bean 集合中匹配一个名字与这里 SequenceService 定义中变量名 sequenceDao 相同的 bean(例如,实例化 SequenceDaoImpl 类得到的 bean)。事实上不是这样的,@Autowired 注解的对象,不论是变量(field)、构造器(constructor),还是 setter 方法,Spring 对于它们都是使用匹配变量类型的方式进行自动装配。原文这里表达的意思是,Spring 使用一个类型为 SequenceDao 的 bean (例如,实例化 SequenceDaoImpl 类得到的 bean)自动装配此处的变量 sequenceDao。

在使用 @Autowired 注解进行自动装配的上下文中,bean 的名字只在 @Autowired 注解的对象类型匹配的结果中含有多个备选 bean 的情况下才有可能发挥作用,此时 bean 的名字作为默认限定词(qualifier)的值参与到 bean 自动装配的回退匹配过程里(本书第 42 页详细介绍了使用限定词 @Qualifier 注解搭配 @Autowire 注解解决后者类型匹配过程中产生歧义的方法)。

参考链接:https://stackoverflow.com/questions/30360589/does-spring-autowired-inject-beans-by-name-or-by-type/30360853#30360853

0
《Spring 5 Recipes: A Problem-Solution Approach》的全部笔记 10篇
豆瓣
免费下载 iOS / Android 版客户端