java - 仅 Autowiring 构造函数的某些参数

标签 java spring inversion-of-control

在 Spring 中是否可以仅 Autowiring 构造函数的特定参数?

我定义了:

<bean class="MyClass">
    <constructor-arg name="name" value="object name" />
</bean>

与:

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

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

    // ...
}

现在我想要 Autowiring MyDao 对象,同时显式定义 name 参数。 可能吗?

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

最佳答案

你不能用 Autowiring 的构造函数来做到这一点,因为它会影响所有参数,但你可以这样做:

public class MyClass{
    private String name;

    @Autowired
    private MyDAO dao;

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

    // ...
}

这类似于为 DAO 设置一个 setter,但您不会在您的类中公开该公共(public) setter。

关于java - 仅 Autowiring 构造函数的某些参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11346205/

相关文章:

java - JSP - 连接到数据库

java - Windows cmd通信的实现方法——多条命令

java - Spring批处理spring jpa错误CannotCreateTransactionException : Could not open JPA EntityManager for transaction IllegalStateException:

java - 从另一个 Spring Controller 调用 Spring Controller

c# - 与 StructureMap 等 IoC 容器相关的间接成本是多少?

java - Spring Security getAuthentication() 返回 null

java - 如何使静态日历线程安全

java - 未发现异常但邮件未在 Spring MVC 中发送

WPF MVVM 导航传递数据

c# - 使用 ASP.NET MVC 4 应用程序实例化 Unity 命名类型注册