在上一篇中介紹了在idea中創建springboot工程及使用web工程輸出“helloworld”到前端頁面,本文學習在springboot工程中讀取屬性文件中的屬性值。
一 自定義屬性
在application.properties文件中添加屬性配置項
myapp.name=helloworld
可以使用@Value 注解來讀取,在之前的helloworld工程的控制器中添加屬性並讀取,如下
@RestController public class HelloController { @Value("${myapp.name}") private String name; @RequestMapping("/hello") public String hello(){ System.out.println("myapp name :" + name); return "helloworld"; } }
@Value 注解會去application.properties文件中配置屬性為myapp.name的屬性,並將值賦值給name屬性。訪問hello方法,可以看到控制台上打印出來的信息
自定義的屬性比較少時使用@Value讀取還是比較方便的,如果我們的屬性比較多的時候,比如我們要讀取數據庫連接池配置的很多的屬性值,再這樣讀取的話,就顯得不是很美觀了。這種情況我們一般定義一個對象,把屬性字段作為對象的屬性來接收,在屬性文件中在增加一個屬性
myapp.age=2
我們定義一個對象MyAppProperties來接收屬性值
@Component @ConfigurationProperties(prefix = "myapp") public class MyAppProperties { private String name; private int age; @Override public String toString() { return "MyAppProperties{" +
"name='" + name + '\'' +
", age=" + age +
'}'; } //省略getter和setter方法
}
@Component 表示指定當前類為實例,以便可以在spring中使用
@ConfigurationProperties(prefix = "myapp") 表示把application中的myapp開頭的屬性自動賦值給當前對象的屬性,比如把myapp.name的值賦值給name屬性
訪問hello方法可以看到

二 自定義屬性配置文件
有的時候,我們需要把自己的屬性配置信息寫在自己的配置文件中,以便和系統的application.properties分開,我們可以在resources目錄下新建自己的屬性文件my.properties,並添加屬性
my.name=helloworld2 my.age=22
定義讀取屬性的對象類,使用 @PropertySource("classpath:my.properties") 來指定我們當前類要讀取的屬性文件
@Component @PropertySource("classpath:my.properties") @ConfigurationProperties(prefix = "my") public class MyAppProperties2 { private String name; private int age; @Override public String toString() { return "MyAppProperties2{" +
"name='" + name + '\'' +
", age=" + age +
'}'; } // 省略getter和setter方法
}
修改控制器hello方法測試
@RestController public class HelloController { @Resource private MyAppProperties myAppProperties; @Resource private MyAppProperties2 myAppProperties2; @RequestMapping("/hello") public String hello(){ System.out.println(myAppProperties.toString()); System.out.println(myAppProperties2.toString()); return "helloworld"; } }
訪問hello方法,可以看到控制台輸出的打印信息