Spring Framework/Spring boot #2: 34개의 글
| 스프링 부트 정적 리소스 지원 스프링 부트에서 정적 리소스를 지원할 시 url의 root(/)에 자동적으로 정적 리소스를 매핑 할 수 있습니다. 프로젝트 구조 | pom.xml +---src | +---main | | +---java | | | \---com | | | \---tutorial | | | \---sptringbootmvc | | | | SptringBootMvcApplication.java | | | | | \---resources | | | application.properties | | | | | \---static | | hello.html hello.html Mobile Hello Static Resource AHAHA LOL http://localhost:8080/hello.h..
| 스프링 부트에서 스프링 웹 MVC 컨트롤러 구현 프로젝트 구조 | pom.xml +---src | +---main | | +---java | | | \---com | | | \---tutorial | | | \---sptringbootmvc | | | | SptringBootMvcApplication.java | | | | | | | \---user | | | UserController.java | | | | | \---resources | | application.properties | | | \---test | \---java | \---com | \---tutorial | \---sptringbootmvc | \---user | UserControllerTest.java 테스트 코드 @RunWi..
| 스프링부트 테스트 ( Spring Boot Test ) 스프링부트에서는 @SpringBootTest 어노테이션을 통해 스프링부트 어플리케이션 테스트에 필요한 거의 모든 의존성을 제공해 줍니다. 또한 @SpringBootTest 어노테이션 내에 어떠한 테스트 환경으로 테스트를 실행할 것인지를 따로 지정할 수 있습니다. 스프링부트 테스트를 진행하기 위해서는 먼저 다음과 같이 의존성을 추가해야 합니다. org.springframework.boot spring-boot-starter-test test 테스트를 실행하기 위해 다음과 같이 간단한 컨트롤러와 서비스를 작성한 다음 스프링부트 어플리케이션이 실행될 메인 진입점이 될 클래스를 작성합니다. 아래는 테스트 해보고자 하는 프로젝트 구조를 나타낸 것입니다. ..
| 스프링 부트 로깅( Spring Boot Logging ) 스프링 부트에서는 로깅 설정을 자동적으로 지원합니다. 다음과 같이 slf4j 로깅 파사드( 로깅 모듈을 추상화한 것 )를 통해 logback 을 기본적으로 지원하고 있죠. @Component public class AppRunner implements ApplicationRunner { // slf4j 로깅 파사드를 통해 logback 로깅 모듈을 지원 private Logger logger = LoggerFactory.getLogger(AppRunner.class); @Override public void run(ApplicationArguments args) throws Exception { logger.info("=============..
| 스프링 부트 프로파일 (Spring Boot Profile) 스프링 부트에서는 프로파일(Profile)을 통해 스프링 부트 애플리케이션의 런타임 환경을 관리할 수 있습니다. 예로들어 어플리케이션 작동 시 테스트 환경에서 실행할 지 프로덕션 환경에서 실행할 지를 프로파일을 통해 관리할 수 있죠. 다음은 프로덕션과 테스트 환경을 각각 외부 설정 파일을 통해서 관리하는 예시입니다. 눈여겨 봐야할 것은 spring.profiles.active 키를 통해 어떤 프로파일을 활성화할 것인지를 정하는 부분입니다. 또한 아래 코드에서 @Profile을 통해 프로파일 기능을 구현하는 것을 볼 수 있습니다. @Profile에 인자로 들어가는 값은 프로파일이 현재 인자값과 일치할 시 아래 코드에서 명시한 스프링 빈을 등록..
| 스프링 부트 외부 설정 스프링 부트는 외부 설정을 통해 스프링 부트 어플리케이션의 환경설정 혹은 설정값을 정할 수 있습니다. 스프링 부트에서 사용할 수 있는 외부 설정은 크게 properties, YAML, 환경변수, 커맨드 라인 인수 등이 있습니다. | properties 파일을 통한 설정 properties 파일을 통해서 다음과 같이 스프링 부트 어플리케이션의 외부 설정을 할 수 있습니다. properties의 값은 @Value 어노테이션을 통해 읽어올 수 있습니다. # application.properties # 스프링부트가 구동될 때 자동적으로 로딩하는 프로퍼티 파일 # 스프링부트의 규약이라고 볼 수 있음 saelobi.name=KBS saelobi.age=${random.int} # 플레이스..
| 이벤트 리스너( Event Listener ) 스프링 부트를 실행할 시 구동되는 단계마다 여러 이벤트들이 발생하게 됩니다. 스프링부트에서는 프로그래머가 이 이벤트들을 나타내는 객체를 인자로 받아 각 단계마다 원하는 처리를 할 수 있습니다. 스프링 부트가 구동될 때 여러 이벤트들이 있지만 그 중에서 ApplicationStartingEvent 와 ApplicationStartedEvent를 예로들어 알아보겠습니다. ApplicationStartingEvent는 다음 코드를 통해 처리할 수 있습니다. @Component public class AppStartedSampleListener implements ApplicationListener { @Override public void onApplicati..
| 스프링부트(Spring Boot) HTTPS 구축 스프링부트에서 HTTPS 설정법은 다음과 같습니다. Terminal 창에 다음과 같이 커맨드를 입력하여 keystore 파일을 하나 생성합니다. keytool -genkey -alias spring -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 4000 다음 알맞게 keystore에 대한 정보를 입력합니다. application.properties에 위에서 설정한 정보를 입력합니다. # application.properties server.ssl.key-store=keystore.p12 server.ssl.key-store-type=PKCS12 server.ss..
| 스프링 부트 내장 웹 서버 설정 스프링 부트 프로젝트를 생성할 시 스프링 부트에서는 내장 서블릿 컨테이너인 톰캣(tomcat)이 자동적으로 설정됩니다. 스프링 부트에서는 ServletWebServerFactoryAutoConfiguration 클래스에서 자동적으로 Tomcat 및 Jetty 같은 내장 웹서버에 대한 설정을 자동적으로 처리하며 스프링 부트 사용자가 쉽게 웹 서버 관련 설정을 하지 않아도 웹 서버를 프로젝트 안에 포함되게 합니다. @Configuration @AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE) @ConditionalOnClass(ServletRequest.class) @ConditionalOnWebApplication(type = Type...
| 사용자(Custom) Autoconfigure 클래스 선언의 문제점 @Configuration 어노테이션을 등록하여 Autoconfigure 스프링 부트 자동 설정을 만들었지만 여기에 문제점이 있습니다. @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication application = new SpringApplication(Application.class); application.setWebApplicationType(WebApplicationType.NONE); application.run(args); } @Bean public Saelobi saelobi(){ ..