在Spring框架中,@Primary注解用于解决什么问题,其具体作用机制是怎样的?
考察说明
考察对Spring依赖注入中多个候选Bean处理机制的理解。
回答思路
- 【回答框架 1】@Primary注解用于标记一个Bean为首选候选,当Spring容器中存在多个类型兼容的Bean且自动装配时未指定限定符,会选择被标记的Bean。
- 【回答框架 2】该注解可应用于组件类(配合@Component等)或@Bean方法上,其优先级高于其他无标记的同类型Bean,但低于@Qualifier指定的Bean。
- 【回答框架 3】在实际场景中,当有多个实现同一接口的Bean时,用于指定默认实现,减少显式@Qualifier的重复使用,提高配置简洁性。
- 【关键点 1】@Primary标记的首选Bean在无限定符时被自动注入。
- 【关键点 2】@Qualifier优先级高于@Primary。
- 【关键点 3】可通过@Primary和@Qualifier结合灵活管理多Bean注入。
- 【易错点 1】误以为@Primary可以完全替代@Qualifier,当需要不同场景注入不同Bean时仍需@Qualifier。
- 【易错点 2】忽略@Primary只影响自动装配,不影响显式getBean调用。
- 【易错点 3】在存在多个@Primary时,Spring仍会抛出NoUniqueBeanDefinitionException。