![](/img/trans.png)
[英]Spring Boot Security JWT custom authentication error messages
[英]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.