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
매개 변수는 위에서 정의한 name
및 title
속성을 인용하였으며, 마지막으로 이 속성의 값은 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 환경설정은 3333application-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
환경별 구성총결산
이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 어느 정도 도움이 되고 의문이 있으면 댓글로 교류하시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.