Java:Spring:如何动态地将params传递给构造函数?

时间:2017-02-24 17:59:43

标签: java spring

假装我有一个班级:

public class Person {

 private final String first;
 private final String last;
 private final Address address;

 public Person(String first, String last, Address address){
  this.first = first;
  this.last = last;
  this.address = address;
 }

 public String getFirst() {
  return first;
 }

 public String getLast() {
  return last;
 }

 public Address getAddress() {
  return address;
 }
}

我有上面的代理类:

public class PersonProxy
{
    private Person person;

    // --Other properties---

    public PersonProxy( Person person)
    {
        this.person = person;
    }
}

我们曾经以这种方式创建PersonProxy的实例:

PersonProxy proxy = new PersonProxy(new Person("Betty", "Kale" , "some address"));

但是我们最近转向Spring并希望将这两个类声明为上下文文件中的bean,但是想要在创建代理对象时动态地在Person类的构造函数中传递这些参数。 如何在上下文文件中为这两个类声明那种bean,以及如何使用要替换的bean来创建PersonProxy类的实例:

PersonProxy proxy = new PersonProxy(new Person("Betty", "Kale" , "some address"));

谢谢你的到来。

2 个答案:

答案 0 :(得分:1)

一种方法是使用FactoryBean,例如创建PersonProxyFactoryBean。有关FactoryBeans的更多详细信息,请参阅this blog post

答案 1 :(得分:0)

创建人物: Person person = context.getBean(Person.class," Betty"," Kale"," some address");

然后创建PersonProxy: PersonProxy proxy = context.getBean(PersonProxy.class,person);