Java 仅自动关联构造函数的某些参数

Java 仅自动关联构造函数的某些参数,java,spring,inversion-of-control,Java,Spring,Inversion Of Control,在Spring中是否可以只自动连接构造函数的特定参数 我定义: <bean class="MyClass"> <constructor-arg name="name" value="object name" /> </bean> 现在我希望MyDao对象自动连接,同时显式定义name参数。 可能吗 使用XML定义bean需要手动定义所有参数?如果我正确理解了您的问题,您会问是否可以连接到上下文中其他地方定义的MyDao实例,并为name参数提供硬编码

在Spring中是否可以只自动连接构造函数的特定参数

我定义:

<bean class="MyClass">
    <constructor-arg name="name" value="object name" />
</bean>
现在我希望
MyDao
对象自动连接,同时显式定义
name
参数。 可能吗


使用XML定义bean需要手动定义所有参数?

如果我正确理解了您的问题,您会问是否可以连接到上下文中其他地方定义的MyDao实例,并为name参数提供硬编码的字符串值。如果这是正确的,您可以像这样配置您的类

<bean class="MyClass">
  <constructor-arg value="Hardcoded string value for the name" />
  <constructor-arg ref="myDaoInstance" />
</bean>

以及上下文文件中的其他位置

<bean class="MyDao" id="myDaoInstance>
  //relevant config
</bean>

似乎您应该将@Autowired添加到MyDao中;声明,然后将构造函数更改为仅使用名称param。您将能够自动访问MyDao

您不能使用autowired构造函数访问MyDao,因为它会影响所有参数,但您可以这样做:

public class MyClass{
    private String name;

    @Autowired
    private MyDAO dao;

    public MyClass(String name){
        // assign only name
    }

    // ...
}

这类似于为DAO提供一个setter,但您不在类中公开该公共setter。

这是可能的。

请参阅此链接:


当一个变量有许多可能的匹配项时,限定符起作用(比如他有许多实现MyDao的bean)。。。或者在我的XML定义中使用显式引用…是的,这取决于项目的其余部分,如果它对大多数bean引用使用自动连接,或者在XML中使用显式定义来保持一致性。但是不建议使用字段注入吗?当客户机需要用很少的特定参数调用这个自动连接的构造函数时,我们应该怎么做?@GopalSAkshintala您可以尝试setter注入。在上面的示例中,您将创建一个名为
setDao()
的方法,并用@Autowired注释它。
public class MyClass{
    private String name;

    @Autowired
    private MyDAO dao;

    public MyClass(String name){
        // assign only name
    }

    // ...
}