從零開始的Spring Boot學習【七】【@PropertySource和@ImportResource】

我們本章來講一下這兩個註解:

@PropertySource
@ImportResource

@PropertySource:

在Spring Boot中,默認是會加載application.properties和application.yml文件中的數據。但是如果我們放實體類中的屬性值,不想寫到這個全局的配置文件中,我們要怎麼辦?這個時候@PropertySource這個註解就發揮作用了,我們可以自己指定哪個文件作爲我們的配置文件

實體類:

文件路徑:

如果大家還不清楚classpath是什麼意思,我在這裏介紹一下:

在網上有很多人說classpath是指WEB-INF/classes,一開始我也以爲是,因爲在運行的過程中,這些java和資源文件都會被編譯轉變爲class文件和相應格式的文件,都會放到一個統一的文件夾中,而這個PropertySource就是把這個路徑賦予,讓系統知道想要找的文件在那個目錄(在運行程序後,它並不是直接運行的java文件,而是要經過編譯,編譯後的文件會放到其他地方,所以不會直接在項目原來路徑中搜尋相應的文件,這個大家要知道)。

但是後面我我發現在這個目錄並沒有相關的class文件信息,經過各種查詢才瞭解了,在我們的項目中,有一個.classpath文件

我們打開它看一下。(博主用的是NotePad++打開的)

在classpathentry裏有一個輸出位置output="target/classes",我們找一下,果然在項目中有這麼一個target文件夾。

我們點進去。

會發現有相關的classes和test-classes文件夾,分別存放了相應的class文件,我們打開classes文件夾來看看裏面的內容。

果然,java文件和相應資源目錄中的文件都存放在此處。

這個纔是真正的classpath的路徑位置。

好的,回到主題,我們設置好了路徑,我們運行一下程序。

正是我們在config.properties中賦予的屬性值。這就說明了@PropertySource起作用了,可以自主的指定配置文件,但是@PropertySource只能指定.properties文件不能指定.yml文件,有興趣的童鞋可以自行去嘗試一下。

@ImportResource:

我們說過Spring Boot是自動裝配的。也就是說Spring等配置文件,會默認給Spring Boot自動配置好。那麼如果我們想要自己編寫Spring等配置文件,Spring Boot會識別嗎?

我們來寫一個Spring的配置文件試試吧:

在資源目錄中,我們右鍵new,Other,然後輸入bean,找到如上圖所示的位置,我這裏取名爲spring.xml。

然後創建package和相應的java文件,如上圖所示。

我們在spring.xml文件中填入如下信息,就像我們之前配置一樣。(不用Spring Boot前)

好的,我們配置好了,我們現在來測試下,能不能從Spring容器中拿到這個bean,如果拿到了就說明可以識別。

在測試類中,我們添加ApplicationContext,這個Spring的上下文對象。然後重新寫一個測試方法,從context中拿我們放進去的bean,然後打印這個對象。(我們StudentService類中不需要寫任何東西,但是對象也會打印相應的值)

我們看看相應的測試結果,果然是報錯了,沒有這個名字叫做studentService的bean,所以Spring Boot默認不會識別。那麼怎麼讓它識別呢?答案是使用@ImportResource。在哪裏使用呢?答案是Spring Boot的主程序啦。

好的,我們現在添加好了,再次運行看看結果。

綠啦綠啦!

相關的對象值也打印出來啦!

手寫Spring配置文件有兩種方式,一種是通過xml配置文件,我們剛剛試過了;另一種是通過註解的方式配置。

我們推薦採用註解的方式,而不推薦使用xml文件進行配置。Spring的官網也是推薦註解方式哩。

那麼怎麼使用註解的方式進行配置呢?下章告訴你。

關注博主,更多精彩哦!

 

上一章:從零開始的Spring Boot學習【六】【通過@Value方式注入】

下一章:從零開始的Spring Boot學習【八】【配置類和佔位符表達式】

發佈了34 篇原創文章 · 獲贊 36 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章