仅自动装配构造函数的某些参数

dav*_*ooh 7 java spring inversion-of-control

在Spring中是否可以仅自动装配构造函数的特定参数?

我定义了:

<bean class="MyClass">
    <constructor-arg name="name" value="object name" />
</bean>
Run Code Online (Sandbox Code Playgroud)

附:

public class MyClass{
    private String name;
    private MyDAO dao;

    @Autowired
    public MyClass(String name, MyDao dao){
        // assign...
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

现在我想让MyDao对象自动装配,同时明确定义name参数.可能吗?

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

Luc*_*ano 5

您无法使用自动装配的构造函数执行此操作,因为它会影响所有参数,但您可以执行此操作:

public class MyClass{
    private String name;

    @Autowired
    private MyDAO dao;

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

    // ...
}
Run Code Online (Sandbox Code Playgroud)

它类似于为DAO设置一个setter,但是你没有在你的类中公开它的公共setter.

  • 但是,不建议不要使用场注入吗?当客户端需要使用很少的自变量来调用此自动装配的构造函数时,我们应该如何处理? (3认同)