$ keytool -keystore mykeys.jks -genkey -alias tomcat -keyalg RSA
전제조건: 구성 속성은 빈의 속성을 나타내는 것
ConfigurationProperties: 구성 속성의 주입을 위한 어노테이션
구성 속성 활용 예시 (클래스)
// 컨트롤러에 구성-속성(페이지) 구현 (기본값: 20)
...
@ConfigurationProperties(prefix="taco.orders")
public class OrderController {
private int pageSize = 20;
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
...
@GetMapping
public String ordersForUser(...) {
Pageable pageable = PageRequest.of(0, pageSize);
...
}
...
}
application.yml 파일을 활용하여 속성 설정 가능
taco:
orders:
pageSize: 10
구성 속성 홀더 정의
@Component
@ConfigurationProperties(prefix="taco.orders")
@Data
public class OrderProps {
private int pageSize = 20;
}
...
public class OrderController {
private OrderProps props;
private OrderRepository orderRepo;
public OrderController(OrderRepository orderRepo,
OrderProps props) {
this.orderRepo = orderRepo;
this.props = props;
}
@GetMapping
public String ordersForUser(...) {
Pageable pageable = PageRequest.of(0, props.getPageSize());
...
}
...
}
구성속성 메타데이터 선언
애플리케이션이 다른 런타임에서 배포될 때 구성 명세가 달라지는 경우 발생 (DB 연결 명세 등)
운영체제의 환경변수를 사용해서 구성
스프링 프로파일
프로파일 특정 속성 정의
프로파일 활성화
프로파일을 사용해서 조건별로 빈 생성
// dev 프로파일이 활성화 되었을 때 CommandLineRunner 빈이 생성
@Profile({"dev"})
public CommandLineRunner dataLoader(...) {
...
}
// dev 프로파일이 활성화 되지 않았을 때 CommandLineRunner 빈이 생성
@Profile({"!dev"})
public CommandLineRunner dataLoader(...) {
...
}