| 스프링 부트 프로파일(Profile) 스프링부트에서는 프로파일(Profile) 을 통해 스프링 부트 애플리케이션의 런타임 환경을 관리할 수 있다. 예를 들어 어플리케이션 작동 시 테스트 환경에서 실행할 지 프로덕션 환경에서 실행할 지를 프로파일을 통해 관리 할 수 있다는 것이다. 다음은 프로덕션과 테스트 환경을 각각 외부 설정 파일을 통해서 관리하는 예이다. 중요한 부분은 spring.profiles.active 키를 통해 어떤 프로파일을 활성화 할 것 인지를 정하는 부분이다. 아래 코드에서 @Profile을 통해 프로파일 기능을 구현한 것을 볼 수 있는데 @Profile 에 인자로 들어가는 값은 프로파일이 현재 인자값과 일치할 시 아래 코드에서 명시한 스프링 빈을 등록하라는 뜻이다. # applic..
스프링 부트 외부 설정 스프링부트는 외부 설정을 통해 스프링부트 어플리케이션의 환경설정 or 설정값을 정할 수 있다. 사용할 수 있는 외부 설정은 크게 properties, YAML, 환경변수, 커맨드 라인 인수 등이 있다. properties 파일을 통한 설정 properties 파일을 통해서 다음과 같이 어플리케이션 외부 설정을 할 수 있다. 참고로 properties의 값은 @Value 어노테이션을 통해 읽어올 수 있다. 프로퍼티 우선 순위 스프링부트에서는 프로퍼티 값에 따라서 우선 순위를 두고 있다는 것을 명심하자 유저 홈 디렉토리에 있는 spring-boot-dev-tools.properties 테스트에 있는 @TestPropertySource @SpringBootTest 애노테이션의 prope..
| 이벤트 리스터(Event Listener) 스프링부트를 실행할 시 구동되는 단계마다 여러 이벤트들이 발생한다. 개발할 때 이 이벤트들을 나타내는 객체를 인자로 받아 각 단계마다 원하는 처리를 할 수 있다. 먼저 ApplicationStartingEvent와 ApplicationStartedEvent를 알아보자. ApplicationStartingEvent은 주의할 부분이 스프링컨테이너가 만들어지기 전에 생성되는 이벤트이기 때문에 SpringApplication 객체에 해당 리스터를 추가해야 한다. package org.kyhslam; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigu..
HTTP/2 적용을 위해서는 기본적으로 SSL이 적용되어 있어야 한다. 먼저 application.properties에 아래와 같이 적용한다. server.ssl.key-store=keystore.p12 server.ssl.key-store-type=PKCS12 server.ssl.key-store-password=kyhslam server.ssl.key-alias=spring server.port=8443 server.http2.enabled=true // http2 적용그리고 pom.xml에서 tomcat을 제외하고 undertow를 추가한다. 마지막으로 애플리케이션을 실행해서 아래와 같이 뜨면 성공! 자세히보면 Undertow started on port(s) 8443 (https) with con..
스프링부트(Spring Boot_) HTTPS 설정 콘솔 창에서 다음의 명령어로 keysotre 파일을 생성한다 https://gist.github.com/keesun/f93f0b83d7232137283450e08a53c4fdhttps://gist.github.com/keesun/f93f0b83d7232137283450e08a53c4fd keytool -genkey -alias spring -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 4000 keytool -genkey -alias spring -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12..
커스텀 AutoConfigure클래스 선언의 문제점 @EnableAutoConfiguration 어노테이션을 통한 빈이 주입되었을 경우 특별한 경우로 이 빈으 다시 재정의하여 쓸 경우 에러가 발생하며 재정의가 안된다. @ConditionalOnMissingBean을 통한 충돌 요소 해결 오버라이딩 충돌을 해결하려면 재정의 한 @Bean에 @ConditionalOnMissingBean 어노테이션을 추가해 줘야 한다. 그러면 동일한 스프링 빈이 정의되었을 시에는 쓰지 않고 그 빈이 없을 경우 자동으로 등록한 빈을 쓰게하는 용도이다.
| 스프링 부트 자동 설정 이해 스프링 부트는 자바의 main 진입점에 @SpringBootApplication을 붙임으로서 사용할 수 있다. 스프링 부트는@SpringBootApplication에 있는 @ComponentScan과@EnableAutoConfiguration어노테이션을 통해 두 단계로 나뉘어서 스프링 부트 프로젝트의 스프링 빈을 찾아내어 등록한다. @ComponentScan은 스프링 프레임워크에서@Repository, @Configuration, @Service등 스프링 빈을 나타내는 어노테이션을@ComponentScan이 붙은 클래스가 위치해 있는 현재 패키지를 기준으로 그 아래 패키지까지 찾아내서 스프링 빈으로 등록하는 기능을 수행한다. @EnableAutoConfiguration은 ..
해당 URL에서 자신이 사용할 설정을 셋팅하여 파일을 다운로드 받는다. https://start.spring.io/ Web, JPA, Lombok, Thymeleaf, H2 DB 선택하였다. 그리고 GENERATE를 하면 ZIP파일을 다운로드 받고 압축을 해제한다. Intellij로 압축 푼 경로로 가서 pom.xml을 선택해 실행한다. pom.xml을 열어보면 아래와 같이 여러 dependencies들이 자동으로 설정되어있다. 4.0.0 org.kyhslam maven_study 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-parent 2.1.7.RELEASE org.springframework.boot spring-boot-starter-da..