簡體   English   中英

Spring Boot中的自定義“簡單”錯誤消息

[英]Custom “Simple” Error Messages in Spring Boot

編寫了Spring Boot 1.5.1(非Web)應用程序以提取數據庫行。 Tomcat數據源是自動配置的,因為它包含在pom.xml

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
        <version>${spring-boot.version}</version>
    </dependency>

因此,這些鍵是必需的,

spring.datasource.driver-class-name=${db.driver}
spring.datasource.url=${db.url}
spring.datasource.username=${db.username}
spring.datasource.password=${db.password}

當缺少任何這些變量(例如$ {db.driver}或$ {db.url})時,應用程序將轉儲整個錯誤堆棧。

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'db.driver' in string value "${db.driver}"
    at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:174)
    at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126)
    at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:236)
    at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210)
...

這使得解決簡單的問題變得困難,因為大量文本被攪亂並弄亂了實際問題。

當$ {db.driver}或任何變量未在諸如application.properties或JVM環境中的任何地方定義時,如何使Spring Boot報告由我定義的自定義簡單錯誤消息? 謝謝

更新1我在第一條評論后給出了一些想法。 我只不過是希望更改異常消息,也不希望阻止它們被拋出日志。 我想先檢查或攔截所需的參數,然后再將其傳遞到實際模塊進行訪問。 以數據源為例。

如果提供默認值,則不存在的占位符將不會導致異常。 而是使用默認值。

您可以在使用屬性的文件中設置屬性的默認值

spring.datasource.url=${db.url?localhost:123//whatever}

然后,您可以在@PostConstruct注釋方法或ApplicationListener中檢查屬性,並根據需要報告錯誤。

但這沒有太大意義,因為當spring嘗試創建與數據庫的連接時,如果沒有正確的配置,它將失敗。 根據您的應用程序,這可能已在應用程序啟動期間發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM