saltfactory's blog


Spring에서 REST 서비스를 위한 컨트롤러에 FORM과 파일업로드(multipart/form-data)를 함께 사용하기와 컨트롤러 테스트하기

서론

최근 REST 기반의 서비스가 인기를 누리고 있지만 기본적으로 웹 서비스에서 입력폼은 FORMs 기반 서비스가 많다. 우리는 앞에서 Spring에서 REST 서비스를 위한 컨트롤러 생성과 컨트롤러 단위테스트 하기 글에서 Spring Boot로 웹 서비스를 구현할 때 REST 서비스를 위한 컨트롤러를 간단히 만들어보았다. Spring Boot에서 JSON 기반의 REST 서비스를 하기 위해서 @RestController, @RequestBody 그리고 @ResponseBody 를 가지고 컨트롤러를 작성하였다. 이번 포스팅에서는 Spring 기반에서 FORMs을 다루기 위한 컨트롤러를 만들고 테스트하는 방법을 소개한다.

Continue Reading

Spring에서 YAML 파일 데이터 객체에 매핑하여 로드하기

서론

Spring 프로젝트를 진행할 때 외부에서 데이터를 로드할 경우가 종종 있다. 가장 쉽게는 Spring Boot에서 사용하는 Configuration Porperty를 로드하는 것이다. Spring Boot는 기본적으로 application.properties 파일을 추가하면 자동으로 Common application properteis 로드하여 프로퍼티 값을 적용할 수 있다. 하지만 자바의 Properties 의 파일의 사용에는 표현의 한계가 있기 때문에 최근에는 Properties를 YAML을 많이 사용하고 있다. Spring Boot에서는 SnakeYAML을 포함하고 있어서 쉽게 외부 파일을 YAML으로 작성하여 쉽게 로드하여 객체로 매핑할 수 있다. 이번 포스팅에서는 Spring Boot에서 YAML로 작성한 파일을 객체로 매핑하여 사용하는 방법을 소개한다.

Continue Reading

Spring에서 REST 서비스를 위한 컨트롤러 생성과 컨트롤러 단위테스트 하기

서론

Spring Boot는 Spring의 복잡한 설정을 고려하지 않고 곧바로 stand-alone Spring 어플리케이션을 개발 할 수 있도록 해준다. 복잡한 Spring 설정의 비용을 들이지 않고도 Spring 기반으로 Ruby on Rails 나 Express.js 와 같이 빠르게 REST 서비스를 만들수 있다. 이번 포스팅에서는 복잡한 설정 없이 곧바로 Spring 기반의 기본적인 REST컨트롤러를 생성하고 REST 컨트롤러를 단위테스트하는 방법을 소개한다.

Continue Reading

IntelliJ에서 Java와 Gradle 버전 설정하기 (Spring Boot)

서론

IntelliJ는 Java 어플리케이션 개발 도구로는 가장 좋은 IDE가 아닌가 생각된다. 학생 때는 Eclipse가 없으면 Java 어플리케이션을 어떻게 개발할 수 있을까 생각하면서 Eclipse가 제일 좋은 IDE라고 생각했는데, IntelliJ를 경험하고 나서는 Eclipse를 아예 지워버렸다. 빠르고 안정적이라서 개발 속도를 높여주는 IntelliJ를 정말 좋아하고 있다. 이런 이유로 IntelliJ를 만든 JetBRAINS의 개발 툴을 대부분 사용하고 있다. 꽤 높은 돈을 지불하고도 아깝지 않은 개발 툴이다.

IntelliJ는 시스템에 설치되어 있는 Java 버전을 자동으로 인식하기도 하고, 자체적으로 내장한 SDK를 사용하기도 한다. 또한 Gradle 프로젝트를 만들면 필요한 라이브러리들을 자동으로 다운받거나 찾아서 개발 환경 변수에 자동으로 등록을 해준다. Spring Boot 예제를 만들기 위해서 시스템에 최신 Gradle을 설치하고 IntelliJ로 프로젝트를 생성하고 난 뒤 gradle build를 하는데 다음과 같은 에러가 발생하면서 빌드가 되지 않는 문제를 만나게 되었다.

FAILURE: Build failed with an exception.

* What went wrong:

Execution failed for task ‘:compileJava’.

invalid source release: 1.8

이 글에서는 IntelliJ에서 최신 Java와 Gradle 설정이 맞지 않았을 경우 발생하는 문제를 소개하고 이 두가지 버전을 설정하는 방법을 소개한다.

Continue Reading

서버 재시작 없이 Spring 웹 프로젝트 개발하기 (Spring Boot, IntelliJ, spring-loaded)

서론

Java 기반 웹 어플리케이션의 가장 큰 단점은 클래스나 정적파일(html, javascript, css)을 수정하고 난 이후 반드시 서버를 재시작해야 한다는 것이다. Node.js 나 Ruby on Rails로 웹 어플리케이션을 개발해본 경험이 있다면 Spring 프로젝트에서 라인 하나 수정하였다고 엄청난 클래스 파일과 정적 파일을 포함한 프로젝트를 모두 재시작 해야하는 것을 보고 놀라지 않을 수 없다. 하지만 Java 개발자들이 이런 불편함을 감수하면서 개발을 하지 않을 것이다. 불편함을 해소하기 위해서 다양한 방법들이 존재하고 빠른 Spring 프로젝트 개발을 위한 Spring Boot와 Idea의 IntelliJ를 사용하여 개발한다면 이런 불편함을 해소할 수 있다. 다시말해서

Spring 프로젝트를 개발하면서 정적파일이나 클래스파일 변경 이후 서버 재시작 없이 변경된 사항을 바로 적용하여 확인할 수 있다.

이 포스팅에서는 Spring 프로젝트에서 정적파일이나 클래스 파일 수정 이후 서버 재시작 없이 개발을 할 수 있는 방법을 소개한다.

Continue Reading