通过传递构造函数参数进行 Spring Bean 实例化?

2022-09-04 21:09:46

我有下面的春豆。

public class Employee2 {

  private int id;
  private String name;
  private double salary;


  public Employee2(int id, String name, double salary) {
    this.id = id;
    this.name = name;
    this.salary = salary;
  }

 // some logic to call database using above values

}

现在我在spring配置文件中有下面的配置。

<bean id="emp2" class="com.basic.Employee2">
            <constructor-arg name="id" value="" />
            <constructor-arg name="name" value="" />
            <constructor-arg name="salary" value="" />
</bean>

现在我无法对上述配置中的值进行硬编码,因为它们是动态的。

现在,我正在使用下面的代码以编程方式获得spring bean。豆子的范围是单一的

Employee2 emp = (Employee2)applicationContext.getBean("emp2");

现在,如何将值传递给 Employee2 构造函数

谢谢!


答案 1

您可以使用 ApplicationContext#getBean(String name, Object ...参数)方法,其中

允许指定显式构造函数参数/工厂方法参数,覆盖 Bean 定义中指定的默认参数(如果有)。

例如:

Integer param1 = 2;
String param2 = "test";
Double param3 = 3.4;
Employee2 emp = 
          (Employee2)applicationContext.getBean("emp2", param1, param2, param3);

无论如何,虽然这可能有效,但您应该考虑使用Spring EL,如问题下方的一条评论所述。


答案 2

推荐