스프링부트에서는 @SpringBootTest 를 통해서 Application Test에 필요한 거의 모든 기능을 제공한다. 우선 사용하기 위해서는 의존성이 필요하다. org.springframework.boot spring-boot-starter-test test 그러면 다음과 같이 가장 기본적인 형태로 Test코드를 작성할 수 있다. @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK) class SampleControllerTest { } @SpringBootTest 의 webEnviroment는 기본값으로 MOCK가 잡혀있는데, 이 경우는 서블릿 컨테이너를 띄우지 않고 MockU..
Spring Boot는 기본적으로 Commons Logging을 사용하는데, SLF4j도 사용가능 하다. 그러나 최종적으로는 Logback을 사용하게 된다. (Logback이 SLF4j 의 구현체, dependency를 보면 JUL, Log4J를 SLF4j로 보내는 의존성이 존재한다.) * 로깅퍼사드 vs 로거 Coomons Logging / SLF4J는 Logger들을 추상화해둔 인터페이스.. 주로 framework는 이러한 퍼사드를 이용해서 코딩을 한다. -> 이렇게하면 로깅 퍼사드 아래의 Logger들을 바꿔 끼울 수 있다는 장점 (JUL, Log4J2, Logback) framework에서 로깅 퍼사드 기반으로 코딩을 하는 이유는 본인들이 원하는 로거를 사용할 수 있도록 하기 위해 간단한 설정을 ..
이번에는 profile 설정에 대해 살펴보도록 하자, 사실 외부 설정과 이어지는 내용이기도 하다. profile 설정은 특정한 profile에서만 특정 Bean을 등록한다거나, Application 동작을 특정 profile에서 Bean 설정을 다르게 하고 싶을 때 사용한다. 먼저 예시로 사용할 Class를 소개하겠다. 1. prod profile을 갖는 Configuration class @Profile("prod") @Configuration public class BaseConfiguration { @Bean public String hello() { return "Hello"; } } 2. test profile을 갖는 Configuration class @Profile("test") @Confi..
기본적으로 Spring Boot에서는 application.properties라는 파일을 설정 파일로 사용한다. (YML도 사용하기도 한다.) 설정 파일을 Application 안팎에 둘 수 있는데, 저 녀석이 Spring Boot가 Application을 구동할 때 자동으로 로딩하는 파일 이름이다. 여기에 key - value 형태로 값을 정의하면 Application에서 참조하여 사용할 수 있게 된다. 여기서 중요한 점은 property는 우선순위에 따라서 그 값이 overwrite될 수 있다는 점이다. 프로퍼티 우선 순위 1. 유저 홈 디렉토리에 있는 spring-boot-dev-tools.properties 2. 테스트에 있는 @TestPropertySource 3. @SpringBootTest ..
스프링 부트의 가장 기본적인 특징을 살펴보도록 하자. 1. Banner 설정 Spring Application을 띄울 때 항상 등장하는 Banner를 직접 Customizing 할 수 있다. 직접 코딩을 통해 만드는 방법도 있지만... 가장 간단한 방법만 소개하고 넘어가도록 한다. resources 디렉토리 안에 Banner.txt | gif | jpg | png 파일을 넣어주면 된다. txt 파일안에 직접 문자를 입력하면 해당하는 문자열이 Application이 뜰 때 등장한다. 또한, gif / jpg / png 파일과 같이 이미지 파일도 등록할 수 있다. 그렇게 중요한 부분은 아니기 때문에 그 외 간단한 것들만 살펴보고 넘어가도록 하자.. Banner.txt에 사용할 수 있는 변수가 존재한다. 아래..
직전 포스팅에서 Application에서 Bean 설정을 했지만,, AutoConfigure에서 설정된 그 값이 그대로 출력되는 현상을 발견했다. 이러한 현상이 발생한 원인을 한번 더 언급하자면, Component Scan을 통해서 직접 설정한 값이 Bean으로 등록된다고 하더라도 이후에 진행되는 EnableAutoConfigure에서 추가적인 Bean 등록이 이루어져 직접 설정한 Bean의 값이 Overwrite 되었기 때문이다. 따라서, 우리는 이 값이 이미 Bean으로 등록되어 있을 때, AutoConfigure에서 Bean으로 등록하지 않도록 하는 @ConditionalOnMissingBean Annotation을 추가적으로 달아줌으로써 해결할 수 있다. @Configuration public c..