Springbootの2つのプロファイル構文の詳細


SpringBootはグローバルなプロファイルを使用しています.プロファイル名は固定されています.次の2つのファイルがあります.
  • application.properties
  • application.yml
  • application.propertiesプロファイル
    #    (  ,   ,  )
    user.user-name=  
    
    #   
    user.user-name=45678
    user.pwd=123456
    user.mobile=18393948482
    user.age=25
    #   
    user.hobby=  ,  ,   
    # Map  
    user.map.k1=123456
    user.map..k2=456789
    
    文字列は二重引用符や一重引用符を使用する必要はありません.書き込みがあれば文字列の一部としてそのまま出力されます.
    テストコードは次のとおりです.
    //      ,     
    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    import java.util.Map;
    
    @Data
    @Component
    @ConfigurationProperties(prefix = "user")
    public class User {
        private String userName;
        private String mobile;
        private String pwd;
        private int age;
        private String[] hobby;
        private Map<String,String> map;
    
    }
    
    
    //  
    import com.example.demo.entity.User;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class DemoApplicationTests {
    
        @Autowired
        User user;
    
        @Test
        public void contextLoads() {
            System.out.println(user);
            String[] hobbys = user.getHobby();
            for (String str:hobbys
                 ) {
                System.out.println(str);
            }
        }
    
    }
    
    //    
    2019-07-03 16:56:39.609  INFO 5596 --- [           main] com.example.demo.DemoApplicationTests    : Started DemoApplicationTests in 3.887 seconds (JVM running for 4.7)
    User(userName='  /n', mobile=18393948482, pwd=123456, age=25, hobby=[  ,   ,    ], map={k1=123456, k2=456789})
    2019-07-03 16:56:39.851  INFO 5596 --- [       Thread-3] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
    application.ymlプロファイル
    yaml構文の紹介
  • k:(スペース)v:一対のキー値ペア(スペースが必要)を表す;
  • スペースのインデントで階層関係を制御する.左揃えのデータ列であれば、同じレベルです.
  • 属性と値も大文字と小文字が敏感である.
  • k:v:字面直接書く;
  • 文字列のデフォルトでは、一重引用符または二重引用符は付けられません.
  • ":二重引用符;文字列の中の特殊な文字はエスケープされません.特殊文字は自分が表したい意味としてname:“zhangsanlisi”:出力;zhangsan改行lisi
  • ':一重引用符;特殊文字がエスケープされ、特殊文字は最終的には普通の文字列データ
  • にすぎません.
  • —:ブロックを表し、1つのymalファイルを複数のファイルに分割
  • yaml基本用法
    #    (  ,   ,  )
    server:
      port: 8081
    
    user:
      user-name:   
      age: 26
      mobile: 18369615874
      #       
      # hobby: [  ,  ,   ]
      # map    
      # map: {k1:   ,k2:   }
      pwd: 123456
      hobby:
        -   
        -   
        -    
      map:
        k1:   
        k2:   
    ---
    #       
    user: {user-name:   ,pwd: 123456,mobile: 1839394721,hobby: [  ,  ,   ],map: {k1:   ,k2:   },age: 26}
    検証結果:
    2019-07-03 17:21:32.074  INFO 32672 --- [           main] com.example.demo.DemoApplicationTests    : Started DemoApplicationTests in 3.201 seconds (JVM running for 3.923)
    User(userName=  , mobile=18369615874, pwd=123456, age=26, hobby=[  ,   ,    ], map={k1=  , k2=  })