天天看點

Spring Boot 核心-外部配置

Spring Boot可以使用properties檔案、yaml檔案或者指令行參數作為外部配置。

1 指令行參數配置

Spring Boot可以基于jar包運作,打成jar包可以通過下面指令運作:

java -jar xxx.jar      

可以通過下面指令修改tomcate端口:

java -jar xx.jar --server.port=9090      

2 正常屬性配置

正常Spring環境下,注入properties檔案裡的值的方式:

  1. 通過@PropertySource指明檔案位置。
  2. 通過@Value注入值。

在Spring Boot環境下:

  1. 在application.properties中定義屬性。
  2. 通過@Value注入值。

3 類型安全的配置(基于properties)

實戰

  1. 建立Spring Boot項目
  2. 在pom中添加
<dependency>  
      <groupId>org.springframework.boot</groupId>  
      <artifactId>spring-boot-configuration-processor</artifactId>  
      <optional>true</optional>  
</dependency>      
  1. 在application.properties中添加配置
author.name=wyh
author.age=30      
  1. 類型安全的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;
  }
}      
  1. 校驗代碼
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);
  }

}      

繼續閱讀