提出问题
在使用 @Autowired 注解时,可否根据 id 注入某个对象?
解决问题
注解 @Autowired 搭配 @Qualifier 注解,可实现 根据 id 注入某个对象
此时与 @Resource 注解功能类似
源码
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Qualifier {
String value() default "";
}
使用
- 修饰 成员变量,此时必须搭配
@Autowired使用 - 修饰 方法形参,可单独使用
作用:
根据 id 注入某个对象
属性:
value:指定要注入的 id
例子
上接:springboot教程-@Autowired详解(二)有多个匹配对象时
修改 StudentCtrl
@RestController
public class StudentCtrl {
@Autowired
@Qualifier("studentSrvImpl")//关键代码
private IStudentService studentSrv;
@Autowired
public StudentCtrl(){
System.out.println("StudentCtrl()构造方法");
}
@RequestMapping("/save")
public JsonResult save( Student student){
// System.out.println(student);
System.out.println(studentSrv);
studentSrv.save(student);
return new JsonResult(0,"保存成功!");
}
}
如果要注入 StudentSrvImpl 类对象,注解为:@Qualifier("studentSrvImpl")
如果要注入 StudentSrvImpl2 类对象,注解为:@Qualifier("studentSrvImpl2")
测试
启动不再报错,访问Controller也正常
本文介绍如何结合@Autowired与@Qualifier注解实现Spring中按ID精确注入Bean,通过示例展示了其用法及注意事项。
6009

被折叠的 条评论
为什么被折叠?



