Spring Boot學習筆記-項目屬性的簡單配置

寫在前面

  上一篇文章,簡單介紹了創建Spring Boot項目,這篇文章主要記錄Spring Boot的簡單配置、兩種配置文件、通過註解獲取配置文件裏的值以及多環境的配置。


簡單的配置

  上一節創建好一個Spring Boot項目之後,會在src/main/resources下創建一個配置文件application.properties。下面在該配置文件內進行簡單的配置。配置如下:

  #配置地址,默認就是本地地址
  server.address=127.0.0.1
  #配置服務端口,默認爲8080
  server.port=8080
  #配置上下文路徑,默認是‘/’
  server.context-path=/boot

.yml配置文件

  在Spring Boot中,還有一種配置文件,被更多開發者所使用。是以.yml結尾的一種配置文件。
  我們首先需要創建這個配置文件,在和application.properties同一個目錄下,我們新建一個application.yml文件。在該文件下,配置與上一步一樣效果的配置。

#需要注意的是,該類型配置文件,冒號與值之間務必要添加空格!!!
  server:
    address: 127.0.0.1
    port: 8080
    context-path: /boot

  與上一步的區別顯而易見,有層次感,結構清晰,所以,建議使用該類型的配置文件。PS:後面的所有配置都是使用.yml配置,還有就是,不管你選擇哪種,另一種配置文件就能刪除了。


通過註解獲取配置文件屬性

代碼中調用配置文件屬性

  在配置文件中,我們可以設置一些屬性,供代碼裏面調用,比如,我們設置一個人的名字,我們可以在配置文件裏這樣配置:

  server:
    address: 127.0.0.1
    port: 8080
    context-path: /boot
  name: HowieLi
  age: 18

  在代碼裏調用name的值,需要使用到@Value註解,代碼如下:

  package cn.howieli;

  import org.springframework.beans.factory.annotation.Value;
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.bind.annotation.RequestMethod;
  import org.springframework.web.bind.annotation.RestController;

  RestController
  public class HelloController {

      @Value("${name}")  //通過${變量名}調用
      private String name;

      @Value("${age}")
      private int age;

      @RequestMapping(value = "/hello", method = RequestMethod.GET)
      public String hello() {
          return name + age;
      }
  }

  此時啓動項目,訪問http://localhost:8080/boot/hello,就會顯示HowieLi18了。

配置文件中調用配置文件中的屬性

  在配置文件中,可以通過${變量名}來調用上面的屬性,配置如下:

  server:
    address: 127.0.0.1
    port: 8080
    context-path: /boot
  name: HowieLi
  age: 18
  content: "name: ${name}, age: ${age}"

  代碼中直接調用content就可以了,訪問啓動的應用顯示name: HowieLi, age: 18

配置文件中配置JavaBean

  生活中一個人的屬性有很多,不光有姓名、年齡,可能還要有身高、住址等等屬性,如果我們在配置文件中全部配置出來,在代碼中一個一個通過註解調用會不會感覺很傻?不過,幸好Spring Boot提供瞭解決方案。現在我們將配置文件修改如下:

  person:
    name: HowieLi
    age: 18

之後,創建一個Person類,爲屬性必須設置getset方法,親測,不設置,值會爲0null,或者直接NullPointerExcepotion,爲方便查看,重寫一個toString方法。Person類如下:

package cn.howieli;

  import org.springframework.boot.context.properties.ConfigurationProperties;
  import org.springframework.stereotype.Component;

  @Component    //將Person類交由Spring容器管理
  @ConfigurationProperties(prefix = "person")   //填寫配置文件中的前綴
  public class Person {
      private String name;
      private int age;

      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;
      }
      @Override
      public String toString() {
          return "Person [name=" + name + ", age=" + age + "]";
      }
  }

  使用@Autowired註解注入,調用數據:

 package cn.howieli;

  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.bind.annotation.RequestMethod;
  import org.springframework.web.bind.annotation.RestController;

  @RestController
  public class HelloController {

      @Autowired
      private Person person;

      @RequestMapping(value = "/hello", method = RequestMethod.GET)
      public String hello() {
          return person.toString();
      }
  }

  重新啓動項目,訪問顯示Person [name=HowieLi, age=18]


多環境配置

  在實際開發中,可能會針對不同的環境進行開發,我們作爲開發人員,總不能每次部署項目都一個一個的去更改配置吧?我們需要把有限的時間放到更有意義的事上。
  接下來,我們在配置文件所在目錄下新鍵一個作爲開發環境的配置文件:application-dev.yml,配置如下:

  server:
    address: 127.0.0.1
    port: 8080
    context-path: /boot
  person: 
    name: Lihao 
    age: 20

再創建一個作爲生產環境的配置文件:application-prod.yml,配置如下:

  server:
    address: 127.0.0.1
    port: 8080
    context-path: /boot
  person: 
    name: HowieLi
    age: 18

此時,修改原配置文件application.yml,配置如下:

  spring: 
    profiles:
    active: dev

  此時重新啓動應用,訪問http://localhost:8080/boot/hello,就會顯示Person [name=Lihao, age=20]nameage的值是開發環境下,也就是application-dev.yml配置文件中的值。反之,將dev修改爲prod,重新啓動應用訪問就會顯示Person [name=HowieLi, age=18]devprod主要取決於之前創建的兩個配置文件。
  補充一點,在使用java -jar命令也可以指定不同的profile啓動,命令如下:

java -jar my-spring-boot.jar --spring.profiles.active=dev

  不清楚該命令的可查看我的上一篇博客:Spring Boot學習筆記-STS創建第一個Spring Boot應用 (其它啓動方式部分)


結語

  以上就是我自己的學習筆記,如有補充或有錯,請一定要指正,一起進步。個人博客:https://www.howieli.cn 和個人CSDN博客: http://blog.csdn.net/howieli_1995

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章