嗨,我是弹簧技术的新手。 我有一个名为Employee的类,如下所示,它有2个不同参数类型的构造函数。 我可以按照xml文件中的描述将值注入其中一个构造函数。 我可以知道如何使用构造函数注入向其他构造函数注入值。 我尝试了各种可能性,但无法弄清楚如何去做。
public class Employee {
private int eno ;
private String name ;
private double salary ;
private String desig ;
public Employee(int eno, String name) {
this.eno = eno;
this.name = name;
}
public Employee(double salary, String desig) {
this.salary = salary;
this.desig = desig;
}
public void showInjectedValues() {
System.out.println("Eno : " + eno);
System.out.println("name : " + name);
System.out.println("salary : " + salary);
System.out.println("desig : " + desig);
}
}
尝试使用spring.xml注入和注入的Java类如下:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class InjectionTest {
static ApplicationContext applicationContext = new ClassPathXmlApplicationContext("springconfig.xml");
public static void main(String[] args) {
Employee employee = (Employee) applicationContext.getBean("employee");
employee.showInjectedValues();
}
}
applicationContext.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<bean id="employee" class="com.vidvaan.spring.Employee">
<constructor-arg value="2000" index="0" type="double" />
<constructor-arg value="team lead" index="1"
type="java.lang.String" />
</bean>
</beans>
答案 0 :(得分:0)
You can create a another bean like this for different arguments:
<bean id = "employeeBean" class = "com.vidvaan.spring.Employee">
<constructor-arg type = "int" value = "2001"/>
<constructor-arg type = "java.lang.String" value = "Employee"/>
</bean>
答案 1 :(得分:0)
嗯,这是不可能的。你问的是什么
调用两个构造函数来创建一个对象。
这没有任何意义。 (请再次阅读上述内容)。
你总是可以在spring上下文中放置同一个类的多个对象,在每种情况下调用不同的构造函数。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<bean id="otherEmployee" class="com.vidvaan.spring.Employee">
<constructor-arg value="100" index="0" type="int" />
<constructor-arg value="team lead" index="1"
type="java.lang.String" />
</bean>
<bean id="employee" class="com.vidvaan.spring.Employee">
<constructor-arg value="2000" index="0" type="double" />
<constructor-arg value="team lead" index="1"
type="java.lang.String" />
</bean>
</beans>
你可以做的是用所有四个参数创建一个构造函数,并为你不想初始化的对象传递null
或者您可以使用包含一些参数的构造函数和其他可以通过Field Injection <property name = ...>