| 스프링 부트 로깅( Spring Boot Logging ) 스프링 부트에서는 로깅 설정을 자동적으로 지원한다. slf4j 로깅 파사드 (로깅 모듈을 추상화 한것)를 통해 logback을 지원한다. 즉, 실제 콘솔에 찍어주는 것은 logback이다. package org.kyhslam.springinit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; ..
| 스프링 부트 프로파일(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..
@Configuration @AutoConfigureOrder(-2147483648) @ConditionalOnClass({ServletRequest.class}) @ConditionalOnWebApplication( type = Type.SERVLET ) @EnableConfigurationProperties({ServerProperties.class}) @Import({ServletWebServerFactoryAutoConfiguration.BeanPostProcessorsRegistrar.class, EmbeddedTomcat.class, EmbeddedJetty.class, EmbeddedUndertow.class}) public class ServletWebServerFactoryAutoConf..
커스텀 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..
| 오라클에서의 조건문 활용법 - CASE WHEN의 기본 구문 CASE WHEN 조건절 THEN 참일때 값 ELSE 거짓일때 값 END 컬럼명 - 다중 CASE WHEN 구문 CASE WHEN RATIO2 = 'X' OR RATIO2 = 0 THEN '' WHEN TO_NUMBER(RATIO2) > 9 THEN TO_CHAR( TO_NUMBER(RATIO2) / 100 ) ELSE '' END AS COMP_COUNT
퀵정렬 | 퀵 정렬이란 ? 분할정복 알고리즘의 하나로, 평균적으로 매우 빠른 수행 속도를 자랑하는 정렬 방법이다. 분할 정복(Divide and conquer)방법 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략 분할 정복은 대개 순환 호출을 이용하여 구현한다. 하나의 리스트를 피벗(Pivot)을 기준으로 두 개의 비균등한 크기로 분할하고 분할된 부분 리스트르 정렬한 다음, 두개의 정렬된 부분 리스트를 합하여 전체가 정렬된 리스트가 되게 하는 방법 퀵 정렬의 단계 분할(Divide) : 입력 배열을 피벗을 기준으로 비균등하게 2개의 부분 배열로 분할 한다 (왼쪽 : 피벗보다 작은 요소, 오른쪽 : 피벗보다 큰 요소) 정복(Conquer) : 부분 배열을..
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.