2017-02-24 112 views
0

假装我有一个类:Java:Spring:如何动态地将params传递给构造函数?

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")); 

但是我们最近搬到了春天nd想要将这两个类声明为上下文文件中的bean,但希望在创建代理对象时动态地在Person类的构造函数中传递这些参数。 如何可以声明那种豆对于那些2班在环境文件,我怎么能创建使用这些bean来代替的PersonProxy类的实例:

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

谢谢你是进步。

+0

我并不真正理解这样一个类Spring bean的意义。但最简单的方法是使用JavaConfig并在您的配置类中添加一个'@ Bean'-annotated方法,该方法使用Java创建对象。 –

+0

是的,目前还不清楚为什么你不能在没有弹簧的情况下创建这些实例,就像你之前做的那样。你不必将所有的对象管理迁移到spring – borowis

回答

0

将此人创建为: Person person = context.getBean(Person.class,“Betty”,“Kale”,“some address”);

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

1

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

相关问题