簡介
首先是理解以下配置鹰霍,配置可以簡單的理解成配置bean平酿。平時寫代碼如果不考慮擴(kuò)展性的話塞椎,很多的配置信息都寫死在了代碼里面(要修改就比較麻煩)。配置就可以狹義的理解成將一些屬性喜庞,常量等放到一個配置文件里面去。
spring boot 的配置方式比較多棋返,我們先講講常見的方式延都。比較常見的方式就是classpath下面的application.properties,spring boot 會加載這個配置文件睛竣。
對待配置也要有理智的認(rèn)識晰房,配置就是為了使用配置,而不是為了配置而配置
創(chuàng)建配置
- 在classPath下面創(chuàng)建一個 application.properties 文件
-
添加一些配置(配置是以鍵值對的形式添加)
使用配置(這個才是最重要的)
- 使用注解的形式 @Value(這里可以理解成 SPEL 表達(dá)式)
@SpringBootApplication
@RestController
public class App {
@Value("${name}")
private String name;
@Value("${number}")
private String number;
@Value("${user.firstname}")
private String firstName;
@RequestMapping("/")
public String showProperInfo(){
return firstName+name+" "+number;
}
public static void main(String[] args){
SpringApplication.run(App.class,args);
}
}
- 使用 Java 代碼來取
@SpringBootApplication
@RestController
public class App {
@Autowired
Environment environment;
@RequestMapping("/")
public String showProperInfo(){
String firstName = environment.getProperty("user.firstname");
String name = environment.getProperty("name");
String number = environment.getProperty("number");
return firstName+name+" "+number;
}
public static void main(String[] args){
SpringApplication.run(App.class,args);
}
}
-
自動裝配到Java類的屬性射沟,注解@ConfigurationProperties(spring boot的自動裝配的bean基本都是使用這種方式實現(xiàn))殊者。可以理解成以一種模式來裝配
-
修改一下配置信息
- 注解配置验夯,ConfigurationProperties 配置一個前綴猖吴,配置文件里面的屬性就可以和前綴映射起來(注意這里要配置的屬性需要get 和 set 方法)
-
@SpringBootApplication
@RestController
@Configuration
@ConfigurationProperties(prefix = "my.setting")
public class App {
private String name;
private String number;
@RequestMapping("/")
public String showProperInfo(){
return name + " " + number;
}
public static void main(String[] args){
SpringApplication.run(App.class,args);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
}
Application.properties的其他功能
-
屬性之間的引用,配置的屬性可以引用其他配置屬性(可以簡單的理解成文本替換)
-
隨機(jī)數(shù)支持
不同配置之間的切換
- 有時候有這樣的需求挥转,測試的時候是一個配置距误,開發(fā)的時候是一個配置
-
按照一定的規(guī)律建立多個配置文件簸搞,通過激活不同的配置文件來實現(xiàn)不同配置之間的切換
-
通過spring.profiles.active屬性激活不同的配置,如果要激活application-dev.properties就使用spring.profiles.active=dev准潭。如果要激活application-pro.properties就使用spring.profiles.active=pro趁俊。這個屬性可以配置多個(spring.profiles.active=pro,dev)
條件化配置
- 使用場景是有一些bean在測試的時候需要注冊,有些bean僅僅在生產(chǎn)環(huán)境注冊
- spring 提供了@Profile注解來條件化配置刑然,這個注解是和上面配置的spring.profiles.active屬性一起使用的寺擂,比如如果@Profile("dev")對應(yīng)的bean或者配置類就僅僅是在spring.profiles.active中有dev是被初始化
- 任何使用了@Component 和 @Configuration注解的類都可以使用Profile注解
@Configuration
@Profile("dev")
public class ProductionConfiguration {
}
?
End