Spring Boot可以使用properties檔案、yaml檔案或者指令行參數作為外部配置。
1 指令行參數配置
Spring Boot可以基于jar包運作,打成jar包可以通過下面指令運作:
java -jar xxx.jar
可以通過下面指令修改tomcate端口:
java -jar xx.jar --server.port=9090
2 正常屬性配置
正常Spring環境下,注入properties檔案裡的值的方式:
- 通過@PropertySource指明檔案位置。
- 通過@Value注入值。
在Spring Boot環境下:
- 在application.properties中定義屬性。
- 通過@Value注入值。
3 類型安全的配置(基于properties)
實戰
- 建立Spring Boot項目
- 在pom中添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
- 在application.properties中添加配置
author.name=wyh
author.age=30
- 類型安全的Bean
package com.chenfeng.xiaolyuh.properties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "author")// prefix指定properties的字首,
public class AuthorSettings {
private String name;
private long age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getAge() {
return age;
}
public void setAge(long age) {
this.age = age;
}
}
- 校驗代碼
package com.chenfeng.xiaolyuh;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.chenfeng.xiaolyuh.properties.AuthorSettings;
@SpringBootApplication // 這個是Spring Boot項目的核心注解,主要是開啟自動配置。
@RestController
public class SpringBootStudentApplication {
@Autowired // 通過注解直接注入配置類
private AuthorSettings authorSettings;
@RequestMapping("/")
public String index() {
return "Hello World! " + authorSettings.getName() + "::" + authorSettings.getAge();
}
// 标準的JAVA應用main方法,主要作用作為項目啟動的入口
public static void main(String[] args) {
SpringApplication.run(SpringBootStudentApplication.class, args);
}
}