当前位置: 首页 > 知识库问答 >
问题:

在spring@组件上使用@ConfigurationProperties时,不应该以“get”开头命名方法

段晨
2023-03-14

假设这样一个简单的spring boot@组件

    @Component
    @Data
    @EnableScheduling
    @ConfigurationProperties(prefix = "demo")
    public class DemoClass {

        private String aString;
        private Long aLong;

        @Scheduled(fixedDelayString = "${demo.delay}")
        void getSomething() {
            System.out.println("aString = " + aString);
            System.out.println("aLong = " + aLong.toString());
        }
    }

它不会开始投掷

ConfigurationPropertiesBindexception:创建名为“demo class”的bean时出错:无法将属性绑定到“demoClass”

您需要修复的只是一个getSomething方法名。只需将其重命名为putSomething(例如)。我花了三个小时调试spring boot源,发现了:spring试图绑定名为Something的Bean属性。并发生异常。

我知道如果不是getter,以get开头命名方法是一种奇怪的做法,但是在spring文档中有提到过它吗?它是否说明了从方法名猜测属性名的一些内容?

共有1个答案

虞展
2023-03-14

是的,spring使用JavaBeans标准来处理配置属性POJO,如下所述:

这种安排依赖于默认的空构造函数,而getter和setter通常是强制性的,因为绑定是通过标准的Java Beans属性描述符进行的,就像在spring MVC中一样。

 类似资料:
  • 问题内容: 有人可以给MWE 直接在方法上使用注释的方法吗? 我已经看到了无数的关于在类定义中使用它的示例-但还没有方法的示例。 引用文档: 这种添加到一个类定义或 一个方法 @Target(value = {TYPE, METHOD }) 因此,我认为还有一种可能性和预期的用途-但不幸的是,我无法弄清楚。 问题答案: 这里的DataSource类具有属性url,用户名,密码,driverClas

  • 我正在学习如何在PHPUnit中进行测试,我想知道在命名PHPUnit测试方法时是否有“最佳实践”。它们的名称是否应该与正在测试的方法相同?例如这种方法 命名 或者名称应该更具描述性?

  • 我是Java world和Spring Boot的新手,我正在尝试通过注释访问位于YAML文件中的一些配置值。 但是每当我试图访问服务中任何地方的配置值时,我得到的是一个空值。 下面是配置类: 使用它的验证器服务: 我还在主类中添加了注释。

  • 我们目前使用的是Swagger-UI-1.0.1和Swagger-SpringMVC-1.0.2。最近,我们从Spring-Boot1.2升级到了1.3.1&在访问Swagger-UI时,我们一直面临着一个小问题。以前我可以使用http://localhost:8080/application-context访问它,但是自从升级到spring-boot 1.3.1之后,我们不得不添加一个尾随斜杠来

  • 我正在JSBin上玩ReactJS框架。 我注意到,如果我的组件名称以小写字母开头,它就不起作用。 例如,以下内容不会呈现: 但只要我用替换它就会呈现。 我不能用小字母开始标签有什么原因吗?

  • 本文向大家介绍在Django的URLconf中使用命名组的方法,包括了在Django的URLconf中使用命名组的方法的使用技巧和注意事项,需要的朋友参考一下 在我们想要捕获的URL部分上加上小括号,Django 会将捕获的文本作为位置参数传递给视图函数。 在更高级的用法中,还可以使用 命名 正则表达式组来捕获URL,并且将其作为关键字参数传给视图。 一个 Python 函数可以使用关键字参数或位