我是spring的新成员,我的目的是创建两个对象,一个对象打印字符串,第二个对象(与第一个对象依赖,取值e打印输出)。这是一个练习:
Helloworld.java是这样的:
@Component
public class HelloWorld {
private String message="";
public void setMessage(String message) {
this.message = message;
}
@Bean
public String getMessage() {
return message;
}
}
Person类这样做:
@Component
public class Person {
private String person="Jessy";
public void setPerson(String person) {
this.person = person;
}
// I want receive hellowordbean and I want print the first message and join the two message
@Autowired
public String printMessage(HelloWorld message) {
return message.getMessage()+" - "+this.person;
}
}
这是主类:
@ComponentScan(value={"com.example.bean"})
public class TestApplication {
public static void main(String[] args) {
//SpringApplication.run(TestApplication.class, args);
ApplicationContext context = SpringApplication.run(HelloWorld.class, args);
HelloWorld word=context.getBean(HelloWorld.class);
word.setMessage("hi world");
ApplicationContext personContext = SpringApplication.run(Person.class, args);
Person person=personContext.getBean(Person.class);
person.setPerson("Jimbey");
System.out.println(person.printMessage(word));
}
}
我运行,我得到
我不知道如何解决这个问题,有人能帮我吗?描述:
需要com.example.bean.Person中printMessage方法的参数0类型为"com.example.bean"的bean。
行动:
考虑定义类型为'com.example.bean '的bean。HelloWorld在你的configur
有很多地方是错误的:(我建议你读一篇关于如何用Spring构建hello world应用程序的教程。
-
从
Person
类的printMessage
方法中删除@Autowired
注释。在这里您可以看到如何使用@Autowired
注释https://www.baeldung.com/spring-autowire。 -
在
TestApplication
类上使用@SpringBootApplication
注释。它创建所有带有@Component
注释的bean。