본문 바로가기

Backend

(76)
Spring Boot 파일 업로드 MultipartFile Spring의 MultipartFile 인터페이스를 이용하여 파일 업로드하는 방법에 대해서 알아볼게요. 파일을 리스트로 여러 개 업로드하면 컨트롤러에서 받을 수 있도록 할거에요. 간단하게 말해서 다중 업로드죠. 예제 구현은 Spring Boot 2.1.8, OpenJDK 11 버전으로 했어요. FileController 기본적으로 @RequestPart 어노테이션을 이용해서 multipart/form-data 요청을 메소드 인수와 연관시킬 수 있어요. @RequestParam를 사용해도 동일하게 잘 받아집니다. @PostMapping("") @ResponseStatus(HttpStatus.CREATED) public List upload(@RequestPart List files) throws Excep..
Spring Boot @Async Callback 비동기처리 기본적으로 Spring은 동기식 처리 모델이기 때문에 메소드를 호출하면 이후의 작업들은 Blocking되어 수행하지 않아요. Spring Boot에서는 @Async라는 어노테이션을 지원하여 상황에 따라 비동기 처리가 가능하도록 하고 있어요. @Async를 어떻게 사용하면 되는지에 대해서 알아볼게요. 설정 파일을 하나 추가해줄게요. @EnableAsync는 서버에서 비동기 처리를 할 수 있도록 기능을 ON하였다라고 보면되요. 또한, AsyncConfigurerSupport를 상속받아서 Thread Pool을 커스텀해볼게요. corePoolSize : 미리 스레드를 만들어 놓아 요청이 들어오면 바로 수행 maxPoolSize : 쓰레드 풀의 최대 사이즈 queueCapacity : corePoolSize가 ..
Spring Boot Scheduler @Scheduled 사용 스프링 부트에서 스케줄러를 돌려서 일정 시간마다 혹은 일정 시간에 로직을 수행하는 방법을 알아볼게요. 설정 파일 스프링 부트에서 스케줄러 기능을 사용하기 위해 @EnableScheduling 설정을 해줄게요. @Configuration @EnableScheduling public class ScheduledConfig { @Bean public TaskScheduler scheduler() { ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); scheduler.setPoolSize(4); return scheduler; } } 스케줄러 구현 스케줄러 컴포넌트를 만들어서 메서드를 구현하고 @Scheduled 설정을 해주면 끝이에요. 1초..
NVM 설치, Node 버전 관리 (Windows / Mac) NVM이란? (Node Version Manager) 말그대로 노드 버전 관리자에요. 마땅히 설명할게 없네요. 어떠한 도구로 개발하다보면 버전을 교체하거나 여러 버전을 관리해야 하는 경우가 생겨요. node도 마찬가지에요. nvm을 활용하여 node를 버전 별로 설치하고 관리하는 방법을 알아보겠습니다. for Windows ...더보기 https://github.com/coreybutler/nvm-windows/releases coreybutler/nvm-windows A node.js version management utility for Windows. Ironically written in Go. - coreybutler/nvm-windows github.com 1. 위의 URL로 접속하면 아래의 ..
REST란? RESTful API 설계, 장단점 REST (Representational State Transfer) 제 멋대로 해석하면 리소스를 보기 쉽게 표현하며 상태를 전송한다. HTTP의 주요 저자인 Roy Fielding(로이 필딩)이 웹 설계의 우수성에 비해, 웹의 장점을 제대로 사용하지 못한다며 발표한 네트워크 아키텍처에요. REST 원리를 따르는 시스템을 RESTful이라 하고, REST 원리로 개발한 API를 RESTful API라고 부르면 되요. 또한, 열정적으로 REST를 옹호하는 사람들을 RESTarians라고 부른다고 하네요. https://ko.wikipedia.org/wiki/REST REST - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 대한민국의 힙합 음악가에 대해서는..
자바 인터페이스 사용 이유 (Java Interface) 자바에서 인터페이스를 왜 써야하나? 이 글 내용은 실제 사용할 수 있는 몇 가지 사례라는 표현이 맞을 수 있습니다. 많은 분들이 인터페이스에 대한 내용을 이론만 보고 이해하기 어려워하시기에 최대한 접근하기 쉽게 적어두었습니다. 생각보다 많은 분들이 글을 보셔서 미리 말씀 드립니다. 해당 내용을 보시고 주체적으로 생각해보시고 다른 글의 내용도 한 번 다시 보시면 깊은 이해에 도움이 될 것 같습니다. 자바 인터페이스 사용 이유 1. Cooperation (협업) 예를 들어 우리는 한국인을 위한 번역기를 만들어 볼거에요. 아 전세계 언어가 너무 많아요ㅠㅠ 그래서 업무를 나눠봤어요. "너는 영어 번역 클래스를 만들어, 난 중국어 번역 클래스를 만들게. 준비~ 시작!" 하고 각자 다 만들어서 결과물을 공유했어요...
Spring Boot JPA로 MariaDB 연동 DB는 이미 준비되어 있다는 가정하에 작성하였습니다. 연동하고 @Entity를 만들어서 실제로 사용할 수 있는지 테스트까지 해보겠습니다. build.gradle JPA를 사용하기 위해 org.springframework.boot:spring-boot-starter-data-jpa 디펜던시를 추가하겠습니다. mariadb를 사용하겠습니다. implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'org.mariadb.jdbc:mariadb-java-client' // MariaDB 다른 DB를 사용할 때에 참고해주세요. runtimeOnly 'com.h2database:h2' // H2 runtimeOnly 'co..
Spring Boot 예외처리 @ControllerAdvice - (3) Rest API를 개발할 때 제가 사용하는 아주 간단한 예외처리 방법을 소개해드릴게요. 클라이언트에게 상태코드로 예외의 성격을 알리고 body에 예외 상황에 대한 메시지를 알려줄거에요. 파일 두 개만 추가해주면 끝이에요. 실제로는 더 복잡할 수 있지만, 이해를 돕기 위해 아주 기본만 남겼으니 도움이 되었으면 좋겠네요. RestException 상태코드와 메시지만 받도록 했어요. 우리는 이 클래스로 객체를 만들어서 throw하여 예외를 발생시킬 거에요. HttpStatus는 스프링프레임워크에서 만들어 놓은 enum 클래스로 상태코드와 상태메시지를 미리 정의해놨어요. public class RestException extends RuntimeException { private static final long..