gpt4 book ai didi

java - 如何在spring中向各种构造函数注入(inject)值

转载 作者:行者123 更新时间:2023-11-30 02:16:30 28 4
gpt4 key购买 nike

嗨,我是 Spring 技术的新手。我有一个名为 Employee 的类,如下所示,它有 2 个具有不同参数类型的构造函数。我能够按照 xml 文件中的描述将值注入(inject)到构造函数之一。我可以知道如何使用构造函数注入(inject)向其他构造函数注入(inject)值吗?我尝试了各种可能性,但无法弄清楚如何做到这一点。

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进行注入(inject),注入(inject)的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>

最佳答案

嗯,这是不可能的。你问的是
调用两个构造函数来创建一个对象。
这没有任何意义。 (只需再次阅读上面的行即可)。

您始终可以在 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
或者您可以有一个带有一些参数的构造函数,其他参数可以通过字段注入(inject)设置 <property name = ...>

关于java - 如何在spring中向各种构造函数注入(inject)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48222302/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com