考虑定义一个类型的bean



我是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应用程序的教程。

  1. Person类的printMessage方法中删除@Autowired注释。在这里您可以看到如何使用@Autowired注释https://www.baeldung.com/spring-autowire。

  2. TestApplication类上使用@SpringBootApplication注释。它创建所有带有@Component注释的bean。

相关内容

  • 没有找到相关文章

最新更新