1. 程式人生 > 其它 >SpringBoot 讀取 yml 配置的幾種方式

SpringBoot 讀取 yml 配置的幾種方式

幾種資料格式的表示方式
1.普通的值(數字,字串,布林)

expire: 60 # 方便測試,設成 60 秒

2.物件、Map (屬性和值) (鍵值對) 不支援tab,使用空格

vipsoft:
   api-url: http://xxxx
   file-path: /temp

3.陣列 (List、Set)

cloud:
    gateway:
      routes:
      - id: push-service
        uri: http://localhost:8081
        predicates:
        - Path=/push/**
        filters:
- name: AuthorizationFilter # 使用者鑑權 - id: express-service uri: http://localhost:8082 predicates: - Path=/express/** filters: - name: AuthorizationFilter # 使用者鑑權

獲取值的方法

application.yml

vipsoft:
  jwt:
    # 加密祕鑰
    secret: d3d3LnZpcHNvZnQuY29tLmNuLjQ3MjYyOTQ3LnNwcmluZyBib290
    # token有效時長,單位秒
    expire: 
60 # 方便測試,設成 60 秒 header: token

第一種 @value 如果yml裡面沒有對應的配置,啟動時會報異常

@Value("${vipsoft.jwt.secret}")
public String secret;

第二種 @ConfigurationProperties

@ConfigurationProperties(prefix = "vipsoft.jwt")
@Component
public class JwtUtils {
    private Logger logger = LoggerFactory.getLogger(getClass());
    
private String secret; private long expire; private String header; //後面程式碼省略,詳見 https://www.cnblogs.com/vipsoft/p/13237172.html Spring Boot JWT 使用者認證 }

第三種 @Environment

@SpringBootTest
class AIReportTests {
    Logger logger = LoggerFactory.getLogger(this.getClass()); 

    @Autowired
    Environment env;

    @Test
    void ymlTest() {
        String s = env.getProperty("vipsoft.jwt.secret");
        logger.info(s);
    }
}