【发布时间】:2020-05-21 03:39:26
【问题描述】:
我正在练习 Spring,我创建了 2 个对象(Captain、BlackWidow),我使用我的 xml 文件中的属性名称和值为其定义了值 据我所知,name 属性将调用两个类的 setName(String name) 方法,并将值 Natasha 和 Captain 传递给setName 方法。但是,当我调用这些方法时,它们似乎没有返回任何值。 这是我的代码:
船长类:
package com.tutorialspoit;
public class Captain {
private String name;
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;
public class Avengers {
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();
}
}
那么,这是我的复仇者联盟课程:
import org.springframework.context.support.*;
public class 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 文件中定义的名称:
所以,我的问题是,我是否正确分配了对象的名称?为什么正在创建对象但没有为它们分配名称?
非常感谢任何帮助。
谢谢,
【问题讨论】:
-
如果你想用Spring练习,不要使用XML配置;它几乎已经过时了。请改用 JavaConfig Spring Boot。使用 JavaConfig,这变成了简单的
@Bean public Captain steveRogers() { Captain c = new Captain(); c.setName("Steve Rogers"); return c; }。
标签: java xml spring code-injection setter