程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了带有字符串参数的spring boot组件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决带有字符串参数的spring boot组件?

开发过程中遇到带有字符串参数的spring boot组件的问题如何解决?下面主要结合日常开发的经验,给出你关于带有字符串参数的spring boot组件的解决方法建议,希望对你解决带有字符串参数的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,请注明来意。