spring boot 는 application.properties 를 사용 하여 외부 설정 을 진행 합 니 다.

5027 단어 springboot
application.properties 는 모두 낯 설 지 않 습 니 다.우 리 는 개발 할 때 수 동 으로 수정 할 수 있 고 컴 파일 하지 않 아 도 되 는 변 수 를 설정 합 니 다.이러한 역할 은 war 가방 이나 jar 를 생산 환경 에 사용 할 때 환경 변 수 를 수 동 으로 수정 할 수 있 습 니 다.다시 컴 파일 하지 않 아 도 됩 니 다.
spring boo 는 기본적으로 많은 환경 변 수 를 설정 하 였 습 니 다.예 를 들 어 tomcat 의 기본 포트 는 8080 이 고 프로젝트 의 contextpath 는'/'등 입 니 다.여기 서 spring boot 의 기본 설정 정 보 를 볼 수 있 습 니 다http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-external-config
spring boot 는 application.properties 파일 을 사용자 정의 한 다음 아래 에 놓 아 spring boot 의 환경 변 수 를 다시 쓰 거나 환경 변 수 를 정의 할 수 있 습 니 다.
현재 디 렉 터 리 의"/config"하위 디 렉 터 리 아래현재 디 렉 터 리 아래
  • classpath 루트 디 렉 터 리 의"/config"패키지 아래
  • classpath 의 루트 디 렉 터 리 아래
    1 시 와 2 시 는 생산 환경 에서 실행 가능 한 jar 패키지 로 포장 하기에 적합 합 니 다.
    这里写图片描述
    "현재 디 렉 터 리"는 demo.jar 패키지 의 디 렉 터 리 에서 설정 파일 을 적용 하려 면 자바-jar demo.jar 명령 을 사용 할 때 demo.jar 패키지 의 경로 에서 이름 을 사용 해 야 합 니 다.
    这里写图片描述
    3 시 와 4 시 는 개발 환경 에 적합 합 니 다.
    这里写图片描述
    네 곳 에 동시에 프로필 이 있다 면 프로필 의 우선 순 위 는 1 부터 4 까지 입 니 다.
    프로필 을 사용 하면 spring boo 가 시 작 될 때 설정 정 보 를 spring 용기 에 자동 으로 읽 고 spring boot 의 기본 설정 을 덮어 씁 니 다.그러면 이 설정 정 보 를 어떻게 읽 고 설정 합 니까?
    1.명령 행 을 통 해 환경 변 수 를 재 작성 하고 설정 합 니 다.우선 순위 가 가장 높 습 니 다.예 를 들 어 아래 명령 을 통 해 spring boot 에 tomcat 가 들 어 있 는 서비스 포트 를 다시 쓸 수 있 습 니 다."="양쪽 에 빈 칸 이 없 도록 주의 하 십시오.
    
    java -jar demo.jar --server.port=9000
    여러 변 수 를 설정 하려 면 json 의 형식 문자열 로 설정 할 수 있 습 니 다.
    
    java -jar demo.jar --spring.application.json='{"foo":"bar"}'
    2.@value 주 해 를 통 해 읽 기
    
    @RestController
    @RequestMapping("/task")
    public class TaskController {
    
    @Value("${connection.remoteAddress}") private String address;
    
    @RequestMapping(value = {"/",""})
    public String hellTask(@Value("${connection.username}")String name){
    
      return "hello task !!";
    }
    
    }
    
    
    3.Environment 인 터 페 이 스 를 통 해 얻 을 수 있 습 니 다.인 터 페 이 스 를 넣 기만 하면 됩 니 다.
    
    @RestController
    @RequestMapping("/task")
    public class TaskController {
    
    @Autowired Environment ev ;
    
    @Value("${connection.remoteAddress}") private String address;
    
    @RequestMapping(value = {"/",""})
    public String hellTask(@Value("${connection.username}")String name){
    
      String password = ev.getProperty("connection.password");
      return "hello task !!";
    }
    
    }
    
    
    4.도구 클래스 를 사용자 정의 하여 얻 을 수 있 습 니 다.이 방식 의 관건 은 설정 파일 정 보 를 읽 는 것 입 니 다.사용자 정의 설정 정보 에 적합 합 니 다.spring 용기 의 기본 설정 정 보 는 읽 을 수 없습니다.
    
    @Component
    public class SystemConfig {
    
      private static Properties props ;
    
      public SystemConfig(){
    
        try {
          Resource resource = new ClassPathResource("/application.properties");//
          props = PropertiesLoaderUtils.loadProperties(resource);
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    
    
      /**
       *     
       * @param key
       * @return
       */
      public static String getProperty(String key){
    
        return props == null ? null : props.getProperty(key);
    
      }
    
      /**
       *     
       * @param key   key
       * @param defaultValue   value
       * @return
       */
      public static String getProperty(String key,String defaultValue){
    
         return props == null ? null : props.getProperty(key, defaultValue);
    
      }
    
      /**
       *   properyies  
       * @return
       */
      public static Properties getProperties(){
        return props;
      }
    
    }
    
    //   ,      
    String value = SystemConfig.getProperty("key");
    
    
    5.${...}을 이용 하여 application.properties 에서 변 수 를 참조 할 수 있 습 니 다.
    
    myapp.name=spring
    myapp.desc=${myapp.name} nice
    
    
    6.application.properties 에서 무 작위 변 수 를 설정 할 수 있 습 니 다.RandomValue PropertySource 류 를 사용 합 니 다.
    
    my.secret=${random.value}
    my.number=${random.int}
    my.bignumber=${random.long}
    my.number.less.than.ten=${random.int(10)}
    my.number.in.range=${random.int[1024,65536]}
    간단 한 프로필 사용 은 여기까지 쓰 고 Profiles 와@ConfigurationProperties 같은 다른 고급 용법 을 살 펴 보 세 요.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기