다시 웹, 백엔드로/스프링 43

Spring Boot 시작하기

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

액츄에이터

운영 환경에서 서비스할 때 필요한 이런 기능들을 프로덕션 준비 기능이라 함 프로덕션을 운영에 배포할 때 준비해야 하는 비 기능적 요소들을 뜻함 지표(metric), 추적(trace), 감사(auditing) 모니터링 스프링 부트가 제공하는 액추에이터는 이런 프로덕션 준비 기능을 매우 편리하게 사용할 수 있는 다양한 평의 기능들을 제공함 액츄에이터는 /actuarot 경로를 통해 기능을 제공함 이 기능은 현재 서버가 잘 동작하고 있는지 애플리케이션의 헬스 상태를 나타냄 액츄에이터 기능을 웹에 노출 액츄에이터가 제공하는 수 많은 기능을 확인 할 수 있음 제공하는 기능을 엔드포인트라 함 health 는 헬스 정보, beans는 스프링 컨테이너에 등록된 빈을 보여줌 각각의 엔드포인트는 /actuator/{엔드포..

YAML / @Profile

YAML YAML (YAML Ain't Markup Language) 사람이 읽기 좋은 데이터 구조를 목표로 함 확장자는 yaml, yml application.properties 예시 environments.dev.url=https://dev.example.com environments.dev.name=Developer Setup environments.prod.url=https://another.example.com environments.prod.name=My Cool App application.yml 예시 environments: dev: url: "https://dev.example.com" name: "Developer Setup" prod: url: "https://another.examp..

@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 파일을 설정 데이터 ..