SpringBoot學習筆記——Spring Boot配置檔案
SpringBoot工程建立時會自動生成application.properties檔案,這個檔案專門存放配置資訊。
但是目前預設的配合檔案已經不能滿足我了,需要自己配置一些資訊。
第一、application.properties有一些預設的也是固定的屬性和引數,不能改,但是我需要加入自己的配置資訊。
第二、專案上線之時程式碼已經編譯,都是.class檔案,沒法修改。但是通過一些工具(我推薦WinSCP),專案的配置檔案是可以修改的。有時出現的一些小問題不值得停機修改java檔案,修改一下配置檔案就可以了。
一、自定義屬性
1. 新建SpringBoot專案,application.propeerties中增加自定義屬性。
server.port=8888
#自定義配置資訊
byk.name=hanleilei
byk.age=18
byk.salary=999999
byk.professional=farmers
2. 使用@Value標籤把屬性注入到需要的程式碼上。
@RestController public class HomeController { @Value("${byk.name}") private String name; @Value("${byk.age}") private int age; @Value("${byk.salary}") private String salary; @Value("${byk.professional}") private String professional; @GetMapping(value = "/hello") public String hello(){ return "我是"+name+",我現在"+age+"歲,職業"+professional+",我期望薪資是"+salary; } }
二、將配置檔案的屬性賦給實體類
1. 需要配置的屬性很多的時候,可以把這些屬性作文一個欄位來建立一個javabean,並且將屬性賦值給他們。
server.port=8888
#自定義配置資訊
byk.name=hanleilei
byk.age=18
byk.salary=999999
byk.professional=farmers
byk.msg=hello,i'm ${byk.name}
byk.num=${random.int(100)}
#random.int(100)隨機生成100以內的數字
2. 引入依賴包。3. 新建People.java,加上@Component和 @ConfigurationProperties標籤。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
@Component
@ConfigurationProperties(prefix = "byk") //配置檔案中屬性的字首
public class People {
private String name;
private int age;
private String salary;
private String professional;
private String msg;
private int num;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSalary() {
return salary;
}
public void setSalary(String salary) {
this.salary = salary;
}
public String getProfessional() {
return professional;
}
public void setProfessional(String professional) {
this.professional = professional;
}
}
4. 新建PeopleContrller,加上@EnableConfigurationProperties。如下:
@EnableConfigurationProperties({People.class})
@RestController
public class PeopleContrller {
@Autowired
People people;
@RequestMapping("/people")
public String people(){
return people.getMsg()+",我今年"+people.getAge()+",我的學號是"+people.getNum()+",我的希望薪資是"+people.getSalary();
}
}
三、自定義配置檔案
需要配置的資訊過多的時候,不願意把所有的資訊都寫在application.properties檔案裡。
1. 我們可以自定義一個my.properties,如下:
student.name=LiLei
student.age=18
student.id=10086
2. 新建Student.java。加@PropertySource和@ConfigurationProperties。
@Configuration
@PropertySource(value = "classpath:my.properties") //指定配置檔案
@ConfigurationProperties(prefix = "student") //屬性的字首
public class Student {
private String name;
private int age;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
3. 新建StudentController。@RestController
//@EnableConfigurationProperties({StudentController.class})
public class StudentController {
@Autowired
Student student;
@RequestMapping("/student")
public String student(){
return "我是"+student.getName()+",現在"+student.getAge()+",學號是"+student.getId();
}
}
四、不同環境下的配置檔案
專案的不同開發階段有不同的配置資訊,比如資料庫連結資訊,開發階段連線本機的資料庫就可以,上線以後連線雲資料庫。具體如下:
- application-test.properties:測試環境
- application-dev.properties:開發環境
- application-prod.properties:生產環境
1. 具體的使用也很簡單,在application.properties中加:
spring.profiles.active=dev
2. 新建application-dev.properties檔案:server.port=9999
五、一些坑
不能算坑,只是有些不明白。
1. 網上的原文說@Component可加可不加,spring-boot-configuration-processor包可引可不引,但是我加不引報錯。
2.網上原文在每個Controller上面加了@EnableConfigurationProperties,但是我這裡加不加都不影響功能。