我正在练习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文件中定义的名称:所以,我的问题是,我是否正确分配了对象的名称?为什么要创建对象,但没有为其分配名称?
非常感谢您的帮助。
谢谢,
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
的原因,就像在默认构造函数方法中打印的一样。>因此,如果要使用名称,则只需简单地呼叫吸气剂
}