XML中的字母注入在分配值时不起作用

问题描述 投票:0回答:1

我正在练习Spring,并创建了2个对象(Captain,BlackWidow),我使用xml文件中的属性名称和值为其定义了值据我所知,name属性将在两个类上都调用setName(String name)方法,并将值[[Natasha和Captain传递给setName方法。但是,当我调用这些方法时,它们似乎未返回任何值。这是我的代码:

队长班:

package com.tutorialspoit;

公共班级上尉{

私有字符串名称;

public Captain() { System.out.println("Captain constructor"); } public String getName() { return this.name; } public void setName(String name) { this.name=name; }

}

Avengers类,从中我从Captain类中调用getName()方法:

package com.tutorialspoit;

公共类复仇者{

private Captain steve; private BlackWidow natasha; public Avengers() { System.out.println("Avengers constructor"); } public void setCaptain(Captain cap){ this.steve=cap; } public String getCaptain() { return steve.getName(); } public void setBlackWidow(BlackWidow bw){ this.natasha=bw; } public String getBlackWidow() { return natasha.getName(); }

}

然后,这里是我的复仇者联盟课:

导入org.springframework.context.support。*;

公共类MainAvengers {

public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); Avengers avg = context.getBean("myAssembly", Avengers.class); avg.getCaptain(); avg.getBlackWidow(); context.close(); }

}

最后是我的applicationContext.xml文件:

<bean id="myAssembly" class="com.tutorialspoit.Avengers"> <property name="captain" ref="steve_rogers"/> <property name="blackWidow" ref="natasha_romanov"/> </bean> <bean id="natasha_romanov" class="com.tutorialspoit.BlackWidow"> <property name="name" value="Natasha"/> </bean> <bean id="steve_rogers" class="com.tutorialspoit.Captain"> <property name="name" value="Captain"/> </bean>

当我编译它时,它可以正常编译,但是没有显示我在xml文件中定义的名称:

enter image description here

所以,我的问题是,我是否正确分配了对象的名称?为什么要创建对象,但没有为其分配名称?

非常感谢您的帮助。

谢谢,

java xml spring code-injection setter
1个回答
0
投票
public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); Avengers avg = context.getBean("myAssembly", Avengers.class); // 1 avg.getCaptain(); //2 avg.getBlackWidow(); //3 context.close();

}

在1,2,3中,您只是调用对象,

其仅调用默认构造函数,这就是为什么只获得输出Class contructor的原因,就像在默认构造函数方法中打印的一样。>

因此,如果要使用名称,则只需简单地呼叫吸气剂

}
© www.soinside.com 2019 - 2024. All rights reserved.