大佬教程收集整理的这篇文章主要介绍了带有字符串参数的spring boot组件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个组件从 application.propertIEs 读取配置值并在其构造函数中接受一个字符串参数。
@Component
public class Person
{
@Value("${greeTing}")
String greeTing;
String name;
public Person(String Name)
{
this.name = name;
onGreet( greeTing + "," + name );
}
public voID onGreet(String messagE)
{
}
}
我需要按如下方式实例化这个组件并在调用代码中覆盖它的“onGreet”事件,如下所示:
Person jack = new Person("jack")
{
public voID onGreet(String messagE)
{
System.out.println( message );
}
};
但是我最终得到了这个..
demo11.Person 中构造函数的参数 0 需要一个无法找到的类型为“java.lang.String”的 bean。
我的application.propertIEs如下:
greeTing=Hello
我在这里错过了什么?谢谢。
它实际上是在告诉您,您拥有的唯一构造函数需要一个 Spring 一无所知的参数。
在构造函数中为该字符串名称添加一个@Value(就在参数之前),就像 public Person(@Value("${name}") String Name)
如果您希望 Spring 初始化它或删除该构造函数
编辑:更多解释:
Spring 是一个依赖注入容器。这意味着您定义 bean 并让 Spring 为您创建和注入它们。定义 bean 可以通过多种方式(Java 配置、注释或 xml)完成,这里您通过 @Component
使用注释方式。
既然您已经为 Spring 定义了 bean(又名组件),它将创建它。为了创建它,它需要调用一个构造函数。为此,您需要为它提供构造函数调用所需的所有信息——即所有参数。如果参数是其他类,它们也需要定义为 bean(例如通过 @Component),如果它们是像 String 这样的简单类型,则需要为它们提供 @Value。
最后,如果您曾经使用 new ...
来定义 Spring 管理的 bean,那么整个 Spring 魔法就会消失,因为 Spring 不再知道这个 bean 实例化,并且不会将任何东西自动装配到其中。对于所有强度和目的,Spring 不知道您使用 new
创建的任何对象。
以上是大佬教程为你收集整理的带有字符串参数的spring boot组件全部内容,希望文章能够帮你解决带有字符串参数的spring boot组件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。