Spring Boot 속성 구성 파일 이해

앞말
많은 사람들이 Spring Boot을 선택하는 것은 주로 Spring의 강력한 기능과 빠른 개발의 편리함을 고려하는 것이라고 믿는다.우리가 Spring Boot을 사용하는 과정에서 가장 직관적인 느낌은 원래 Spring 응용 프로그램을 통합할 때 많은 XML 설정 내용이 없다는 것이다. 이를 대체하는 것은 pom.xml에서 모듈화Starter POMs를 도입한 것이다. 그 중에서 각 모듈은 모두 자신의 기본 설정을 가지고 있기 때문에 특수 응용 장면이 아니라면 application.properties에서 일부 속성 설정을 완성하면 각 모듈의 응용 프로그램을 열 수 있다.
이전의 각 글에는 application.properties의 사용에 대해 언급되었는데 주로 데이터베이스 연결, 로그 관련 설정 등을 설정하는 데 사용되었다.이러한 설정 내용을 제외하고 본고는 application.properties 설정에서의 다른 특성과 사용 방법을 구체적으로 소개할 것이다.
사용자 정의 속성 및 로드
Spring Boot을 사용할 때도 일반적으로 사용하는 속성을 정의해야 합니다. 다음과 같이 직접 정의할 수 있습니다.

com.didispace.blog.name= DD
com.didispace.blog.title=Spring Boot 
그리고 @Value("${ }") 메모를 통해 다음과 같은 구성 속성을 로드합니다.

@Component
public class BlogProperties {
 @Value("${com.didispace.blog.name}")
 private String name;
 @Value("${com.didispace.blog.title}")
 private String title;
 //  getter setter
}
규칙에 따라 단원 테스트를 통해 BlogProperties의 속성이 프로필에 따라 불러왔는지 확인합니다.

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(Application.class)
public class ApplicationTests {
 @Autowired
 private BlogProperties blogProperties;
 @Test
 public void getHello() throws Exception {
 Assert.assertEquals(blogProperties.getName(), " DD");
 Assert.assertEquals(blogProperties.getTitle(), "Spring Boot ");
 }
}
매개변수 간 참조application.properties의 매개변수 간에도 다음 설정과 같이 직접 참조하여 사용할 수 있습니다.

com.didispace.blog.name= DD
com.didispace.blog.title=Spring Boot 
com.didispace.blog.desc=${com.didispace.blog.name} 《${com.didispace.blog.title}》
com.didispace.blog.desc 매개 변수는 위에서 정의한 nametitle 속성을 인용하였으며, 마지막으로 이 속성의 값은 DD 《Spring Boot 》 이다.
랜덤 수 사용
어떤 경우, 어떤 매개 변수는 키, 서비스 포트 등 고정된 값이 아니기를 바랍니다.Spring Boot의 속성 프로필에서는 ${random} 을 통해 int 값, long 값 또는string 문자열을 생성하여 속성의 무작위 값을 지원할 수 있습니다.

#  
com.didispace.blog.value=${random.value}
#  int
com.didispace.blog.number=${random.int}
#  long
com.didispace.blog.bignumber=${random.long}
# 10 
com.didispace.blog.test1=${random.int(10)}
# 10-20 
com.didispace.blog.test2=${random.int[10,20]}
명령줄에서 속성 값 설정하기
Spring Boot을 한동안 사용한 사용자는 이 명령을 반드시 알고 있을 것입니다. java -jar xxx.jar --server.port=8888, Cserver.port 속성을 사용하여 xxx를 설정합니다.jar 응용 포트는 8888입니다.
명령줄이 실행될 때 연속적인 두 개의 빼기 기호는 application.properties 의 속성 값에 값을 부여하는 표식이다.따라서 java -jar xxx.jar --server.port=8888 명령은 application.properties에 속성server.port=8888을 추가하는 것과 같습니다. 이 설정은 샘플 프로젝트에서 볼 수 있습니다. 독자는 이 값을 삭제하거나 명령줄을 사용하여 이 값을 설정해서 검증할 수 있습니다.
명령행을 통해 속성 값을 수정하는 것은 물론 좋은 편리성을 제공하지만, 명령행을 통해 응용 실행의 매개 변수를 변경할 수 있다면 매우 안전하지 않겠는가?그렇기 때문에 Spring Boot은 명령줄의 접근 속성을 차단하는 설정을 제공합니다. 이 설정만 하면 차단할 수 있습니다.SpringApplication.setAddCommandLineProperties(false) .
다중 환경 구성
우리가 Spring Boot 응용 프로그램을 개발할 때, 일반적으로 같은 프로그램은 개발, 테스트, 생산 등 몇 가지 다른 환경에 응용되고 설치된다.그 중에서 각 환경의 데이터베이스 주소, 서버 포트 등 설정이 다르기 때문에 서로 다른 환경을 포장할 때 설정 파일을 빈번하게 수정해야 한다면 매우 번거롭고 오류가 발생하기 쉬운 일이 될 것이다.
다중 환경의 설정에 대해 각종 프로젝트 구축 도구나 프레임워크의 기본적인 사고방식은 일치한다. 여러 개의 서로 다른 환경의 프로필을 설정하고 패키지 명령을 통해 패키지가 필요한 내용을 지정한 후에 패키지를 구분한다. 스프링 부트도 예외가 아니거나 더욱 간단하다.
Spring Boot의 다중 환경 구성 파일 이름은 다음과 같은 형식을 충족해야 합니다.
  • application-{profile}.properties: 개발 환경
  • {profile}: 테스트 환경
  • application-dev.properties: 운영 환경
  • 어떤 구체적인 프로필이 불러올지는 application-test.properties 파일에서 application-prod.properties 속성을 통해 설정해야 하며, 그 값은 application.properties 값에 대응한다.
    예를 들어 spring.profiles.active 응용 프로그램-test를 불러옵니다.properties 프로필 내용
    다음은 서로 다른 환경에서 서로 다른 서비스 포트를 설정하는 것을 예로 삼아 샘플 실험을 진행한다.
  • 각 환경에 대한 다양한 구성 파일 새로 만들기{profile}, spring.profiles.active=test, application-dev.properties
  • 이 세 파일에 모두 다른 application-test.properties 속성을 설정합니다. 예를 들어 dev 환경설정은 1111,test 환경설정은 2222,prod 환경설정은 3333
  • application-prod.properties에서 설정server.port, 기본적으로 dev 환경으로 설정
  • 서로 다른 구성의 로딩 테스트
  • 실행application.properties, 서비스 포트가 1111로 설정된 것을 관찰할 수 있습니다. 즉, 기본 개발 환경(dev)
    실행spring.profiles.active=dev, 서비스 포트가 2222로 설정된 것을 관찰할 수 있습니다. 즉, 테스트 환경의 설정(test)
    실행java -jar xxx.jar, 서비스 포트가 3333, 즉 생산 환경의 설정(prod)으로 설정된 것을 관찰할 수 있다
    위의 실험에 따라 다음과 같이 다중 환경의 배치 사고방식을 정리할 수 있다.
  • java -jar xxx.jar --spring.profiles.active=test에 공통 컨텐츠 구성 및 설정java -jar xxx.jar --spring.profiles.active=prod, 개발 환경 기본 구성
  • application.properties 환경별 구성
  • 명령행을 통해 서로 다른 환경의 구성을 활성화
  • 예제 코드: chapter2-1-1
    총결산
    이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 어느 정도 도움이 되고 의문이 있으면 댓글로 교류하시기 바랍니다.

    좋은 웹페이지 즐겨찾기