일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Spring Framework
- tomcat
- Mockito #Reflection #Sigleton #Test #JUnit
- 톰캣
- 외장톰캣
- 디자인패턴 #싱글톤
- spring
- autocomplete
- LiveTemplate
- Today
- Total
자라선
11. 외부설정 본문
application.properties 불러오는 방법
Application.properties 에서 정의된 값은 @Value 어노테이션이나 SpringBootBean에 등록되어있는 Environment bena을 의존성 주입하여 사용할 수 있다.
application.properties
test.name=thkong
@Value("${test.name}")
private String name;
또는
@Autowired
Environment environment;
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("프로퍼티 값 : " + environment.getProperty("test.name"));
}
Properties의 적용 우선 순위
1. 유저 홈 디렉토리에 있는 spring-boot-dev-tools.properties
2. 테스트에 있는 @TestPropertySource
3. @SpringBootTest 애노테이션의 properties 애트리뷰트
4. 커맨드 라인 아규먼트
5. SPRING_APPLICATION_JSON (환경 변수 또는 시스템 프로티) 에 들어있는 프로퍼티
6. ServletConfig 파라미터
7. ServletContext 파라미터
8. java:comp/env JNDI 애트리뷰트
9. System.getProperties() 자바 시스템 프로퍼티
10. OS 환경 변수
11. RandomValuePropertySource
12. JAR 밖에 있는 특정 프로파일용 application properties
13. JAR 안에 있는 특정 프로파일용 application properties
14. JAR 밖에 있는 application properties
15. JAR 안에 있는 application properties
16. @PropertySource
17. 기본 프로퍼티 (SpringApplication.setDefaultProperties)
빌드 순서
빌드시 처음에 main 하위의 java와 resources의 파일들을 컴파일 하여 classpath에 등록한다.
그 후 테스트를 컴파일 후 classpath에 등록을 하는데 그 때 application.properties가
test에 있는 것으로 오버라이딩 된다.
main -> test -> application.properties change
Properties의 random 또는 변수 재정의
application.properties 에서 랜덤 값을 생성 할 수 있다.
test.random=${random.int}
이미 정의한 변수를 재활용할 수 있다. 플레이스 홀더
name = taehyun
fullname = ${name} Kong
properites의 변수들을 vo 로 생성
application.properties에 정의되어 있는 변수들을 매번 @Value나 Environment 로 주입받아 사용 할 수도 있지만 따로 vo로 정의받아서 바인딩할 수 있다.
이 경우 기존의 @Value 와 다르게 타입세이프가 된다는 장점이 있다. (properties에 정의된 변수의 값이 정수인지 문자열인지 구분이 안가는것을 vo에서 정의)
또한 Relaxed Binding(융통성 바인딩)을 지원한다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
test.name=thkong
test.age=19
@Component
@ConfigurationProperties("test")
public class TestProperties {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
· 융통성 있는 바인딩
context-path (케밥)
o context_path (언드스코어)
o contextPath (캐멀)
o CONTEXTPATH
· 프로퍼티 타입 컨버전
o @DurationUnit
· 프로퍼티 값 검증
o @Validated
o JSR-303 (@NotNull, ...)
· 메타 정보 생성
· @Value
o SpEL 을 사용할 수있음
o 위의 기능은 안됨
'Develop > Spring Boot' 카테고리의 다른 글
13. Logging (0) | 2020.07.27 |
---|---|
12. Profile (0) | 2020.07.27 |
10. SpringApplication 기본 (0) | 2020.07.27 |
9. JAR 실행 및 패키징 원리 (0) | 2020.07.27 |
8. SSL or HTTP2 설정 (0) | 2020.07.27 |