스프링 부트 개념과 활용
4. 스프링 부트 활용
포스팅 참조 정보
GitHub
공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다
해당 포스팅에 대한 내용의 GitHub 주소
실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다
https://github.com/freespringlecture/springboot-concept-uses/tree/chap04-03-01-configuration
해당 포스팅 참고 인프런 강의
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard
실습 환경
- Java Version: Java 11
- SpringBoot Version: 2.1.2.RELEASE
3. 외부 설정 1부
사용할 수 있는 외부 설정
- properties
- YAML
- 환경변수
- 커맨드 라인 아규먼트
프로퍼티 우선 순위
- 유저 홈 디렉토리에 있는
spring-boot-dev-tools.properties
- 테스트에 있는
@TestPropertySource
@SpringBootTest
애노테이션의 properties 애트리뷰트- 커맨드 라인 아규먼트
java -jar springinit-0.0.1-SNAPSHOT.jar --freelife.name=mavel
- SPRING_APPLICATION_JSON (환경 변수 또는 시스템 프로티) 에 들어있는 프로퍼티
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config ServletConfig
파라미터ServletContext
파라미터java:comp/env
JNDI 애트리뷰트System.getProperties()
자바 시스템 프로퍼티- OS 환경 변수
RandomValuePropertySource
- JAR 밖에 있는 특정 프로파일용
application.properties
- JAR 안에 있는 특정 프로파일용
application.properties
- JAR 밖에 있는
application.properties
- JAR 안에 있는
application.properties
@PropertySource
- 기본 프로퍼티 (
SpringApplication.setDefaultProperties
)
Bug 발생 포인트
test package에 main package에 작성된 property 변수가 없으면 Error가 발생함
이유는 main package를 먼저 빌드해서 classpath에 넣고 test package를 빌드 할 때
main package의 properties 파일을 오버라이딩 하는데
변수 설정이 다르면 기존 변수를 없애버리므로 오류가 발생함
해결법은 똑같이 properties 를 맞춰주거나 아래의 세가지 방법으로 해결함
4순위 방법 @SpringBootTest
Annotation에 properties 직접 지정
@SpringBootTest(properties = "freelife.age=2")
3순위 방법으로 @TestPropertySource
에 properties 직접 지정
@TestPropertySource(properties = {"freelife.name=superman", "freelife.age=23"})
2순위 방법 @TestPropertySource
에 추가로 생성한 test.properties
파일 locations 지정
main package application.properties 파일이 classpath에 생성된 후 동일한 property 변수를 덮어씀
@TestPropertySource(locations = "classpath:/test.properties")
application.properties 우선 순위 (높은게 낮은걸 덮어 씁니다.)
아래의 네가지 위치에 application.properties가 위치할 수 있는데 위치에 따라 우선순위가 달라짐
- file:./config/
- file:./
- classpath:/config/
- classpath:/
application.properties 랜덤값 설정하기
random으로 값을 줄때 공백이 있으면 안됨
${random.int(0,100)}
이렇게 줘야됨
- ${random.*}
플레이스 홀더
위에서 사용한 변수는 재사용할 수 있음
- name = freelife
- fullName = ${name} baik
Command Line Application 끄는법
SpringApplication.setAddCommandLineProperties(false)
'개발강의정리 > Spring' 카테고리의 다른 글
[스프링 부트 개념과 활용] 4-4. 프로파일 (0) | 2019.10.26 |
---|---|
[스프링 부트 개념과 활용] 4-3. 외부 설정 2부 (0) | 2019.10.25 |
[스프링 부트 개념과 활용] 4-2. SpringApplication 2부 (0) | 2019.10.23 |
[스프링 부트 개념과 활용] 4-2. SpringApplication 1부 (0) | 2019.10.22 |
[스프링 부트 개념과 활용] 4-1. 스프링 부트 활용 소개 (0) | 2019.10.21 |
댓글