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.總結
寫博文不易,期望給個贊或者關注。