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

如果在使用ConfigurationProperties时未设置属性,Spring不会抱怨

冀永寿
2023-03-14

我有一个通过ConfigurationProperties配置的bean:

@Component
@ConfigurationProperties(prefix = "mybean")
public class MyBean {

    @NotEmpty
    private String name;

    // Getters, setters, ...
}

我通过应用程序配置字段值。yml但在“两级”中。在默认应用程序中。yml我只是将值设置为另一个属性的值:

myBean.name: ${theValueOf.myBean.name}

在配置文件特定的YML文件中,我有:

theValueOf.myBean.name: 'The desired value'

我的期望是,如果我忘记指定属性theValueOf.myBean.name,那么应用程序将在启动时失败,并显示占位符theValueOf.myBean.name无法解析的消息。相反,字段name被分配了值(字面意思)${theValueOf.myBean.name}

如果我用@Value(“${myBean.name}”)注释名称字段(并且不要使用ConfigurationProperties),并且忘记定义属性的值。豆豆。name,则应用程序在启动时失败——正如预期的那样。

我的问题是:如何让Spring在启动时失败,并显示“无法解析占位符…”当使用ConfigurationProperties时?

共有1个答案

谭志用
2023-03-14

只需在@ConfigurationProperties中用JSR303注释标记属性即可。

@Component
@ConfigurationProperties(prefix = "mybean")
public class MyBean {

   @NotEmpty
   private String name;
}
 类似资料:
  • 我试图在Spring Boot环境中设置一个clamav病毒扫描程序。因此,我想在属性文件clamav.properties中设置主机和端口,该文件与application.properties文件一起位于我的resources目录中。看起来是这样的: 我有这门课: 它没有连接,在日志中我得到这个: 因此,这些值显然没有设置。我做错了什么?我使用的是spring boot starter web的

  • 我想通过使用@ConfigurationProperties注释将我的Application.Properties自动绑定到一个类中。首先,我尝试了@value注释,并能够将属性值注入类变量。但是,@ConfigurationProperties没有将属性注入到值中。 我的应用程序.属性: application.java ConfigBinder.java 输出: 这样的执行到底出了什么问题?

  • 我正在Micronaut中编写一个java库模块,它有一个http客户端。这个想法是我的微服务将使用这个库作为jar依赖项并使用http客户端。 问题陈述:我想在不使用 的情况下配置我的 HttpClient。 为什么我不想用application.yml?-因为使用此库的微服务也将拥有自己的< code>application.yml,并且在构建jar时,需要合并两个< code>applica

  • 例如,我有一个bean类 我想设置这个属性的值。 在Xml配置中,我可以 我如何实现同样的事情,即设置属性的值使用Java注释?现在我已经读到,我们可以使用@Value注释使用一些属性文件,但它不能不使用属性文件,做的方式,我通过xml文件?或者使用属性文件是必要的? 我可以通过包含

  • 以下问题:如果已经使用了端口,我预计会出现异常。 所以我试着在一个线程中启动我的服务器两次 但没有例外。我还尝试添加一个通道处理程序并在那里捕获异常,没有运气:/ 用bind(port)包围行以捕获异常也没有效果。但我注意到,当我向ChannelFuture添加一个ChannelListener时,其中一个启动的实例从未达到这一点。 有人有主意吗?

  • 我想在启动时Spring加载一些属性并将它们转换为正确的类型。 应用yml: 为了将这些属性加载到类型中,我使用了以下@ConfigurationProperties:BaseProperties。Java语言 我得到的一切都是一个BindException,如下所示: 解决方案: 将类标记为静态类或将其创建为单独的类: