一 自定義屬性
在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方法,可以看到控制檯輸出的打印信息
---------------------
作者:Java架構閒談
來源:CSDN
原文:https://blog.csdn.net/qiyue683209/article/details/86618673
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!