1. 程式人生 > >Spring boot 基礎配置

Spring boot 基礎配置

前言

上一篇文章介紹瞭如何開啟spring boot,這篇文章將介紹spring boot的一些基本配置,通過這篇文章,你將知道:spring boot全域性配置、配置檔案的優先順序、如何讀取自定義配置檔案、如何通過命令列方式執行、如何定製Banner等

定製Banner

Spring Boot專案在啟動的時候會有一個預設的啟動圖案:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/
___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/

只需要在src/main/resources目錄下新建banner.txt檔案,把我們自己的圖案複製進去,就能自定義這個圖案,當然可以通過網站:http://patorjk.com/software/taag/ 一鍵生成,我們使用Aurora生成,效果如下

配置檔案的優先順序

application.propertiesapplication.yml檔案可以放在以下四個位置:

  • 外接,在相對於應用程式執行目錄的/congfig子目錄裡。
  • 外接,在應用程式執行的目錄裡
  • 內建,在config包內
  • 內建,在Classpath根目錄

如果你在相同優先順序位置同時有application.properties和application.yml,那麼application.properties裡的屬性裡面的屬性就會覆蓋application.yml

測試:在resources目錄下分別新建application.properties和application.yml,指定埠啟動

application.properties內容

server.
port=8081

application.yml內容

server:
  port: 8080

啟動服務,可以看到spring boot載入的是application.properties的內容

自定義屬性的讀取

有時候專案需要用到自定義的屬性,在application.properties中定義

me.zhengjie.name=zhengjie
me.zhengjie.pass=123456

使用@Value(value=”${屬性名稱}”),將值繫結到相應屬性上,並且在啟動類中加入控制器,使其可以直接訪問,如:

@RestController
@SpringBootApplication
public class SpringbootDeployApplication {

    @Value("${me.zhengjie.name}")
    private String name;

    @Value("${me.zhengjie.pass}")
    private String pass;

    @GetMapping("/")
    public String index(){
        return "name:"+name+",pass:"+pass;
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringbootDeployApplication.class, args);
    }
}

啟動專案,訪問http://localhost:8081,頁面顯示如下:

在屬性非常多的情況下,也可以定義一個和配置檔案對應的Bean:
通過註解@ConfigurationProperties(prefix=“me.zhengjie”)指明瞭屬性的通用字首,通用字首加屬性名和配置檔案的屬性名對應。

@Component
@ConfigurationProperties(prefix="me.zhengjie")
public class MyProperties {

    private String name;

    private String pass;

    // get,set略
}

在之前的啟動類中,注入該Bean,即可獲取屬性值

	@Autowired
    private MyProperties myProperties;

    @GetMapping("/test")
    public String index1(){
        return "name:"+myProperties.getName()+",pass:"+myProperties.getPass();
    }

啟動專案,訪問http://localhost:8081/test,頁面顯示如下

屬性間的引用

在application.properties配置檔案中,各個屬性可以相互引用,如下:

me.zhengjie.name=zhengjie
me.zhengjie.pass=123456

me.zhengjie.nameAndPass=${me.zhengjie.name}--${me.zhengjie.pass}

自定義配置檔案

在src/main/resources路徑下新建一個application-test.properties配置檔案

me.zhengjie.test=test

定義一個對應的Bean

@Configuration
@ConfigurationProperties(prefix="me.zhengjie")
@PropertySource("classpath:application-test.properties")
@Component
public class MyTestProperties {

    private String test;

    // get,set略
}

註解@PropertySource(“classpath:application-test.properties”)指明瞭使用哪個配置檔案

命令列方式執行

通過命令列的方式執行spring boot程式

java -jar xx.jar     --使用預設的配置檔案
執行外部配置檔案
java -Dspring.config.location=E:\resources\xx.properties -jar xx.jar
修改埠號
java -jar xx.jar --server.port=8888

專案原始碼

github:https://github.com/dqjdda/SpringBoot_All

碼雲:https://gitee.com/hgpt/SpringBoot_All

開源後臺管理系統:

歡迎體驗 Aurora

github: https://github.com/dqjdda/Aurora

碼雲: https://gitee.com/hgpt/Aurora