Spring Boot & 配置

簡介

首先是理解以下配置,配置可以簡單的理解成配置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基本都是使用這種方式實(shí)現(xiàn))??梢岳斫獬梢砸环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ī)律建立多個配置文件,通過激活不同的配置文件來實(shí)現(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注解來?xiàng)l件化配置,這個注解是和上面配置的spring.profiles.active屬性一起使用的,比如如果@Profile("dev")對應(yīng)的bean或者配置類就僅僅是在spring.profiles.active中有dev是被初始化
  • 任何使用了@Component 和 @Configuration注解的類都可以使用Profile注解
@Configuration
@Profile("dev")
public class ProductionConfiguration {

}

?


End

[2]??using spring boot
[1]??spring boot mvc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容