【发布时间】:2017-02-20 17:27:33
【问题描述】:
我正在学习spring,但是当我在下面尝试时它不起作用,但是在我使用方法时在构造函数的地方它起作用了,为什么?背后有什么具体原因吗?我的问题是为什么spring设计师决定不允许@Qualifier在构造函数之上但在方法之上?
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
public class Employee {
private Company comp;
@Autowired
@Qualifier(value="beanId")
private Employee(Company comp) {
this.comp=comp;
}
public Company getComp() {
return comp;
}
}
参数中的@Qualifier 有效.. 说下面的工作没关系
private Employee(@Qualifier(value="beanId") Company comp) {
this.comp=comp;
}
但是@Qualifier 在上面的方法中可以正常工作,为什么?
@Qualifier(value="beanId")
private void getEmpDetails(Company comp) {
this.comp=comp;
}
【问题讨论】:
-
如果有多个参数,
@Qualifier应该适用于哪个参数? -
好吧,那么为什么下面的作品我的意思是为什么它适用于方法,请告诉我如果我遗漏了任何明显的东西谢谢:) @Qualifier(value="beanId") private void abc(Company comp) { this.comp=comp; }
-
下面是什么?你指的是什么?
-
@SotiriosDelimanolis 我在上面编辑了我的问题,请看一下
-
它是较新 API 中的有效目标。请注意,您的链接适用于 2.5.x 版本,而 Spring 当前的版本为 5.0.0