【问题标题】:why @Qualifier not allowed above constructor?为什么@Qualifier 不允许在构造函数之上?
【发布时间】: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

标签: java spring


【解决方案1】:

是的,对于构造函数,您不能使用@Qualifier,因为您将它用于其他方法。
@Qualifier 注释可以仅用于构造函数参数

更多参考请见this offcial article

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 2019-06-01
    • 2015-07-14
    相关资源
    最近更新 更多