在Spring中获取具有特定参数的bean到构造函数

时间:2015-07-02 08:59:51

标签: java spring constructor-injection

假设我有那个班级

public Student{
 private String name;
 private Address address;

 public Student(String fName, Address address){
  name = fname;
  this.address = address;
}

我在Spring配置中将此类定义为

 <bean name="studentInstance" class="StackOverFlow.Student"/>

现在我想使用带参数的getBean我将传递给构造函数。 等于Student s = new Student(name,address) 我知道Spring提供了一个methond getBean(class_name,parms ....) 但是我不知道应该如何配置Spring.xml配置文件。 我想避免使用Setter和getter来填充新的bean。

我找到了很多关于如何在xml中定义</constructor-arg>的示例,但每次都使用默认值。在这里,我让用户为每个对象输入不同的值。 我想使用 ApplicationContext context = new ClassPathXmlApplicationContext(Spring.xml file path); Student s= (Student)context.getBean("studentInstance",name,address);

我只需要配置文件的帮助

提前致谢!!

我已检查过这些链接: Link1 Link2 Link3 Link4

~~~~~编辑~~~~~~~

解决!这里不需要构造函数注入 我刚刚将原型范围添加到我的bean中,如下所示。

<bean name="carInstance" class="MainApp.bl.GasStation.Car" scope="prototype"/>

1 个答案:

答案 0 :(得分:0)

首先,这种bean显然必须被声明为原型。

  

Prototype将单个bean定义范围限定为具有任意数量的对象实例。如果scope设置为prototype,则每次对该特定bean发出请求时,Spring IoC容器都会创建该对象的新bean实例   &LT;

function random(){ $number = rand(50,100); echo "<h1> Your Score: {$number}/100 </h1>"; if($number>70){ echo "<h2>Your Grade is D</h2>"; }else if($number=(range(70, 80))){ echo "<h2>Your Grade is C</h2>"; }else if($number=(range(80, 90))){ echo "<h2>Your Grade is B</h2>"; }else if($number==80){ echo "<h2>Your Grade is B</h2>"; }else if($number=(range(90, 100))){ echo "<h2>Your Grade is A</h2>"; } } $score = random(); echo $score;

  

返回指定bean的实例,该实例可以是共享的或独立的。   允许指定显式构造函数参数/工厂方法参数,覆盖bean定义中指定的默认参数(如果有)。

有关配置,请参阅以下问题:

Spring <constructor-arg> element must specify a ref or value

注意,您必须将基元包装到其Wrapper对象中,以避免在创建对象时具有预定义的值。