Springboot疑難雜症(一) --關於自定義stater的yml無法提示的問題

1.前言

博主在以前在搭建架構的時候就碰到了類似的情況,就是在使用@EnableConfigurationProperties註解的時候,不管怎樣,在項目中引入了該starter的情況下依然不發自動的提示properties裏面的屬性,以至於造成了特別大的麻煩,對於我們程序員來說,記憶屬性方法這些東西是異常痛苦的事情。

@Data
@ConfigurationProperties(prefix = "properties")
public class DefaultProperties {

    @NestedConfigurationProperty
    public SwaggerProperties swagger;
}
--------以上爲properties
properties:
  swagger:
    type: service
    packages: com.szfy.notice.controller
    api-tittle: '尚志逢源公告模塊 swagger文檔'
    service-url:
    writer-name: '王樂'
    api-des: '更多請關注石墨文檔'
    version: '1.0.0'
------無法識別,只能一個個的敲擊,異常痛苦

2.解決方案

網上的解決方案大多由頭無尾,甚至直接搜索yml無法提示根本搜索不要有效的解決方案。
原因如下:

  • Eclipse不會出現這類的問題,只有idea或者其他的ide纔會有無法識別的情況。博主之前用eclipse開發的時候沒出現無法提示的情況(很坑)。
  • 導入spring-boot-configuration-processor依然無法解決(能解決個鬼!!!)
  • 網上有介紹創建spring-configuration-metadata.json文件的方式(網上大多是開發大牛,根本不介紹細節,以至於不會創建)
    綜合鎖上,博主會基於第三種解決方案給出最詳細的解答

3.引入依賴包

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>

這個包必須有,不然其他的無法做。

4.配置idea

網上講解的創建spring-configuration-metadata.json,這個文件過於繁瑣,手動寫基本是不可能,所以這裏有簡單的生成方式,生成後只需要加以修改就行。

setting>Build,execution,deployment>Compiker>Annotation Processors,勾選Enable annotation processing

在這裏插入圖片描述

5.打包編譯starter(重點)

  • 首先作爲一個老鳥,在編譯的時候必須得maven clean,不然上次你編譯打包的東西有誤你自己還認爲是正確的。
  • 然後maven compile(切記,starter的類型必須爲jar,不能爲pom,不然你根本找不到爲什麼會有問題!!!)
  • maven install,老鳥必須要將項目打包到本地服務,別問爲什麼,問就是經驗。

在target目錄下,會生成一個spring-configuration-metadata.json文件,看吧,不需要手動創建了,有的你在starter創建了,沒有打包仍然無效。
在這裏插入圖片描述

6.additional-spring-configuration-metadata.json文件創建

這個文件是對上一個文件的補充說明,創建方式也很簡單

  • 1.將target目錄下的spring-configuration-metadata.json文件複製到resource目錄下的META-INF下,有人問沒有咋辦,問的人都不會boot,開個玩笑,沒有直接創建就行。
  • 將文件改成標題的名字,繼續maven clean ,compile,install。
  • target目錄下會生成一個additional-spring-configuration-metadata.json文件,這樣補充文件就完成了。

7.總結

寫博文不易,期望給個贊或者關注。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章