当前位置: 首页 > 知识库问答 >
问题:

我们可以在子构造函数javaspring中更改父bean的自连线吗?

储承
2023-03-14

我对Spring的注释有一个问题。我似乎无法使用@Qualifier注释更新对象。让我们简略地解释一下我的问题:

假设我有一个如下所示的父java类:

public class test {

 @Autowired
    protected object x;
}

使用以下构造函数扩展父类的子类:

public class testChild extends test {

    @Autowired
public testChild(@Qualifier("y") Object y) {
        this.x = y;
    }

和2个Bean,一个带有@Primary注释,另一个带有@Bean(Name=“y”)。

带有@Primary注释的Bean似乎总是被应用的,因为父类指定了autowired而没有限定符,并且我在构造函数中收到的Bean也是主Bean,有没有一种方法可以在不修改父类的情况下获得带有子类的Bean@qualifier(“y”)呢?

共有1个答案

司马高昂
2023-03-14

不是您想要的方式,没有-解决方案是停止使用@Primary,而只在任何地方使用@Qualifiers。或者您可以使用@Profile为不同的概要文件创建不同的bean。但无论何时使用@Primary,它都会成为主bean,这就是注释的要点。

 类似资料:
  • 正如我们所知,Java是一种面向对象的语言。在Java中,一切都是对象。我们还知道对象有一些东西(实例变量/字段)和一些事情(方法)。它的安全,我们改变了使用方法,即实例变量的状态;二传手

  • 题目说明了一切,我得到了一个类,其中构造函数的变量必须是私有的。 当然,它附带了变量的公共。 现在问题就在我尝试制作一个名为 Magazine 的子类之后。该类应继承名称和价格,但对于每个对象启动,价格都是恒定的。所以它们不会作为名称出现在构造函数上。 这也带有它自己的。 我试图将价格放在构造函数中,但构造函数需要一个传递的参数。使用还会通知父构造函数中没有一个具有这样的形状。 当我尝试使用父类方

  • 问题内容: 我有一个“ ChildClass”类,它扩展了“ ParentClass”类。我不想完全替换父类的构造函数,而是要先调用父类的构造函数,然后再做一些额外的工作。 我相信默认情况下会调用父类的0参数构造函数。这不是我想要的 我需要用参数调用构造函数。这可能吗? 我试过了 但这不起作用,因为您无法修改“ this”。 问题答案: 您可以从子代的构造函数中以“ super”引用父代的构造函数

  • 问题内容: 我遇到的情况是,在实例化类时,我只想读取配置文件一次。 假设我有一个名为的方法,该方法读取配置并将其放入对象中。当程序需要使用配置值时,它将使用定义键读取对象。我想知道构造函数仅在生命周期中调用一次。我可以将我的方法放入构造函数中,这将使我有一次调用的好处,还是有另一种机制可以这样做? 问题答案: 更好的设计是 工厂设计模式

  • 问题内容: 在Java中,我们可以在一个类中创建多少个构造函数。 问题答案: 严格来说,JVM类文件格式将一个类的方法(包括所有构造函数)限制为少于65536。而且,根据汤姆·哈顿(Tom Hawtin)的说法,有效限制为65527。每个方法签名在常量池中占用一个插槽。由于65535池条目中的某些条目(不可避免地)被其他事物消耗,因此格式良好的类文件不可能使用所有可能的方法/构造函数ID。 参考-

  • 在Java中,我们可以在一个类中创建多少构造函数。