스프링 부트 16

Spring Boot 시작하기

Spring Boot 시작하기Spring Boot 는 프로덕션 제품 수준의 스프링 기반 어플리케이션을 만들 수 있음Spring 구성이 거의 필요하지 않음java -jar 로 실행하는 Java 어플리케이션을 만들 수 있음  특징Spring 개발에 대해 빠르고, 광범위하게 적용할 수 있는 환경기본값 설정이 되어있으며 변경할 수 있음대규모 프로젝트에 공통적인 비 기능 제공 (보안, 모니터링 등)XML 구성 요구사항이 없음  https://start.spring.io   Spring Boot REST API프로젝트 생성  ⁉️ 서버 port 를 변경하려면   GET 요청 받기 스프링에서 컨트롤러 작성시키기 위해서는 클래스를 만들어야 함작성한 클래스 위에 @RestController 어노테이션을 붙여줘야함주소를 ..

@ConfigurationProperties 검증

@ConfigurationProperties 검증 최대 커넥션 숫자는 최소 1 최대 999라는 범위를 가져야 한다면 검증을 어떻게 할 수 있을까? 자바에는 자바 빈 검증기 (java bean validation) 이라는 표준 검증기가 제공됨 자바 빈 검증기를 사용하려면 spring-boot-starter-validation 이 필요함 @NotEmpty 어노테이션: 항상 값이 있어야 함 @Min(1) @Max(999) 어노테이션: 최소 1, 최대 999의 값을 허용 @DurationMin(seconds = 1) @DurationMin(seconds = 60) 어노테이션: 최소 1, 최대 60초를 허용 MyDataSourceConfigV3 생성 및 ExternalReadApplication.java 수정 m..

외부설정사용 - @ConfigurationProperties 생성자

외부설정사용 - @ConfigurationProperties 생성자 @ConfigurationProperties는 생성자를 통해서 객체를 만드는 기능을 지원 생성자를 만들어 두면 생성자를 통해서 설정 정보를 주입함 @Getter 가 자동으로 getter를 만들어줌 @DefaultValue: 해당 값을 찾을 수 없는 경우 기본값을 사용 etc를 찾을 수 없는 경우: Etc 객체를 생성하고 내부에 들어가는 값을 비워둠 (null, 0) option 을 찾을 수 없는 경우: DEFAULT라는 이름의 값을 사용 실행 결과 application.properties 에 필요한 외부 설정을 추가하고, @ConfigurationProperties 의 생성자 주입을 통해서 값을 읽어들임, Setter 가 없으므로 개발자..

외부 설정 사용 - @ConfigurationProperties

외부 설정 사용 - @ConfigurationProperties Type-safe Configuration Properties 스프링은 외부 설정의 묶음 정보를 개체로 변환하는 기능을 제공함, 타입 안전한 설정 속성 객체를 사용하면 타입을 사용할 수 있음, 잘못된 타입 입력 방지 등 활용할 수 있는 부분들이 많아짐 설정 정보 그 자체도 타입을 가지게 됨 외부 설정을 주입 받을 객체를 생성, 각 필드의 외부 설정의 키 값에 맞춰서 준비 @ConfigurationProperties 어노테이션이 있으면 외부 설정을 주입 받는 객체라는 뜻 기본 주입 방식은 자바빈 프로퍼티 방식 @EnableConfigurationProperties(MyDataSourcePropertiesV1.class) 스프링에게 사용할 @C..

외부 설정 사용 - @Value

외부 설정 사용 - @Value @Value 어노테이션을 사용하면 외부 설정값을 편리하게 주입받을 수 있음 @Value 에 ${ } 를 사용해서 외부 설정의 키 값을 주입 받을 수 있음 @Value 는 필드에서 사용할 수 있고, 파라미터에 사용할 수도 있음 기본값 키를 찾지 못할 경우 기본값을 사용하려면 : 뒤에 기본값을 적어주면 됨 @Value("${my.datasource.etc.max-connection:1}") 실행 스프링 빈을 2개 등록해서 같은 결과가 두번 나옴 하나하나 외부 설정 정보의 키값을 입력받고 주입을 받아야함 정보의 묶음으로 되있어 객체로 변환해서 사용할 수 있다면 편리할 것 feat. 스프링부트 - 핵심 원리와 활용 (김영한)

외부설정 사용 - 1

외부설정 사용 - 1 스프링이 지원하는 다양한 외부 설정 조회 방법 Environment @Value - 값 주입 @ConfigurationProperties - 타입 안전한 설정 속성 MyDataSource url , username , password : 접속 url, 이름, 비밀번호 maxConnection : 최대 연결 수 timeout : 응답 지연 시 타임 아웃 options : 연결시 사용하는 기타 옵션들 @PostConstruct 에서 확인을 위해 설정된 값을 출력 외부 속성 설정 데이터를 사용 (application.properties) properties 케밥 표기법 properties는 소문자와 - (dash) 를 사용하는 캐밥표기법을 주로 사용 MyDataSource 에 값 설정 및..

우선순위

우선순위 설정 데이터 --spring.profiles.active=dev 옵션 지정을 안해주면 스프링은 "default" 라는 이름의 프로필을 사용함 기본값 스프링은 문서를 위에서 아래로 순서대로 읽으면서 실행 함 설정한 기준이 먼저 실행됨 dev로 설정되있다면 dev를 실행하고, prod로 설정되있다면 prod로 실행함, 아무것도 설정되있지 않다면 default로 실행 참고, 프로필을 한번에 둘 이상 설정하는 것도 가능 (--spring.profiles.active=dev,prod) 속성 부분 적용 최종적으로 url 부분은 dev.db.com 으로 dev 프로필에서적용한 것이 반영되고, 나머지는 처음에 입력한 기본값이 유지된다. feat. 스프링부트 - 핵심 원리와 활용 (김영한)

설정 데이터

설정 데이터 외부 파일 OS 환경 변수, 자바 시스템 속성, 커맨드 라인 옵션 인수는 사용해야 하는 값이 늘어날 수록 사용하기가 불편해짐 대안은 설정값을 파일에 넣어서 관리하고, 애플리케이션 로딩 시점에 해당 파일을 읽어들이면 됨 .properties 파일은 key=value 형식을 사용해서 설정값을 관리하기에 적합 개발, 운영 서버에 각각 application.properties 외부파일을 생성 애플리케이션 로딩시점에 해당 파일을 읽어 속에있는 값들을 외부 설정값으로 사용 파일 이름이 같으므로 애플리케이션코드는 그대로 유지할수 있음 스프링과 설정 데이터 스프링은 해당 파일을 읽어서 사용할 수 있는 PropertySource의 구현제를 제공함 application.properties 파일을 설정 데이터 ..

외부 설정 - 2

외부 설정 - 2 커맨드 라인 인수 커맨드 라인 인수 (Command line arguments) 는 애플리케이션 실행 시점에 외부 설정값을 main(args) 메서드의 args 파라미터로 전달하는 방법 사용 java -jar app.jar dataA dataB 필요한 데이터를 마지막 위치에 스페이스로 구분해서 전달 dataA, dataB 2개의 문자가 args 에 전달됨 커맨드 라인 인수는 공백 (space)로 구분 CommandLineV1 - arg dataA CommandLineV1 - arg dataB 보통 key=value 형식으로 데이터를 받는것이 편리함 커맨드 라인 인수를 다음과 같이 입력 url=devdb username=dev_user password=dev_pw 커맨드 라인 인수는 ke..

외부 설정 - 1

외부 설정 - 1 OS 환경 변수 OS 환경 변수 (OS environment variables) 는 해당 OS 를 사용하는 모든 프로그램에서 읽을 수 있는 설정 값 사용 범위가 가장 넓음 조회 방법 윈도우 : set mac, 리눅스 : printenv set 실행 결과 애플리케이션에서 OS 환경 변수 값 읽어오기 System.getenv() : OS 전체 환경 변수를 Map으로 조회 System.getenv(key) : 특정 환경변수 값을 String으로 조회 OS 환경 변수는 전역 변수 같은 효과가 있음 해당 애플리케이션을 사용하는 자바 프로그램 안에서만 사용되는 외부 설정값을 사용하고 싶을 때도 있음 자바 시스템 속성 자바 시스템 속성 (Java System properties) 은 실행한 JVM ..