티스토리 뷰
1-1. 외부설정 1부
프로퍼티 우선 순위
유저 홈 디렉토리에 있는 spring-boot-dev-tools.properties
테스트에 있는 @TestPropertySource
@SpringBootTest 애노테이션의 properties 애트리뷰트
커맨드라인 아규먼트
SPRING_APPLICATION_JSON (환경 변수 또는 시스템 프로퍼티)에 들어있는 프로퍼티
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)
application.properties 우선 순위(높은게 낮은걸 덮어 쓴다.)
file:./config/
file:./
classpath:/config/
classpath:/
properties에서 랜덤값 설정하기
${random.자료형}
server.port의 경우 0을 할당해야 가용범위 안의 포트를 찾아서 맵핑해줌
1-2. 외부설정 2부
커밋 로그
타입-세이프라는 의미는 @Value("${namjune.name}")과 같이 직접 프로퍼티 값을 입력해서 발생할수 있는 에러를 내지 않을 수 있다는 의미이다. @ConfigurationProperties으로 정의하고 빈으로 만든 뒤 getter를 통해서 값을 가져오기 때문에 @Value로 직접 쓰는 것 보다 안전하게 사용할 수있다.
프로퍼티스 파일 자체가 타입-세이프 하다는 의미는 아니다.
타입-세이프 프로퍼티 @ConfigurationProperties
여러 프로퍼티를 묶어서 읽어올 수 있음
빈으로 등록해서 다른 빈에 주입할 수 있음
@EnableConfigurationProperties
@Component
@Bean
스프링부트 애플리케이션에서는 @EnableConfigurationProperties이 등록이 되어 있으므로 @ConfigurationProperties가 선언되어있는 클래스에 @Component를 추가하여 빈으로 만들어 주기만 하면 된다.
융통성 있는 바인딩(RelaxedBinding)
context-path(케밥)
context_path(언더스코어)
contextPath(카멜)
CONTEXTPATH
프로퍼티 타입 컨버전
프로퍼티 파일에 txt가 문자로 입력되지만, int로 컨버전 되어서 들어간다.
@DurationUnit
시간정보를 받고 싶을 때 사용하면 컨버전이 이루어 진다.
AppProperties.java
public class AppProperties.java {
...
ChronoUnit.SECONDS) (
private Duration sessionTimeout = Duration.ofSeconds(30);
...
}application.yml
nj
name namjune
age $ random.int(0 100)
fullName $ nj.name Kim
sessionTimeout30==========================
namjune
64
namjune Kim
PT30S
==========================
프로퍼티 값 검증
프로퍼티 값을 검증하고 싶을때, @Validated 애노테이션을 정의하고 JSR303 구현체인 hibernate-validator 애노테이션을 사용해서 검증한다.
@Validated
JSR-303(@NotNull, ...) 구현체 = hibernate-validator
메타 정보 생성
@Value에서는
SpEL 을 사용할 수 있지만..
위에 있는 기능들은 전부 사용 못한다.
'ICT Eng > Spring' 카테고리의 다른 글
[Spring boot] HttpMessageConverters (0) | 2019.01.10 |
---|---|
[Spring Boot] 스프링 웹 MVC (0) | 2019.01.10 |
[Spring Boot] 스프링 부트 테스트 (0) | 2018.12.14 |
[Spring Boot] 스프링 부트 로깅(기본 로깅, 커스텀 로깅) (0) | 2018.12.10 |
[Spring Boot] 스프링 부트의 의존성 관리, 자동 설정, 내장 웹 서버 (0) | 2018.11.15 |
- Total
- Today
- Yesterday
- 무선통신소프트웨어연구실
- Raspberry Pi
- 한밭대학교
- Recursion
- 한밭이글스
- github
- Spring Boot
- vuejs
- 시간복잡도
- Vue.js
- JPA
- Spring
- 라즈베리파이
- ORM
- 젠킨스
- AWS
- 자바
- springboot
- vuex
- 인프런
- RBT
- 알고리즘
- Java
- 스프링부트
- IT융합인력양성사업단
- Algorithm
- 정렬
- Wisoft
- 순환
- 레드블랙트리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |