Programming/Spring 15

Spring Webflux - Reactive Streams API 만들기[0]

개요 안녕하세요 이번에 Spring Webflux를 이용한 API를 만들면서 배웠던 것들을 정리해보려고 합니다. 처음 프로젝트를 만들기부터 심상치않았던 만큼, Java 와 Spring webflux 를 이용해 어떻게 개발했는지 정리해보겠습니다. Spring Webflux - Reactive Streams란? 먼저 Reactive Streams 란게 무엇인지부터 찾아보겠습니다. Reactive Streams 의 공식문서에서 소개된 문장입니다. 논블로킹(non-blocking), 백 프레셔(back pressure)를 이용한 비동기(asynchronous) 데이터처리의 표준 기존의 처리방식은 데이터 처리요청을 받으면 모든 데이터를 처리한 후 메모리에 적재되어야만 응답메세지를 받았습니다. 하지만 Stream ..

Programming/Spring 2022.10.03

API 문서 만들기 - OpenAPI 3.0 적용하기

OpenAPI 란? OpenAPI Specification 3.0 ( OAS ) 라고도 하며 이전 2.0버전까지는 Swagger 라는 도구로 더 유명하다. 아직까지도 Swagger (스웨거) 3 라거나 하는 경우도 종종 있는거같다. OpenAPI 는 RESTFul API를 명세화하거나 문서화 하기 위한 도구로 개발되었으며, 최소한의 구현으로 한눈에 API에 필요한 내용을 파악하기 위해 만들어지고 사용되고 있다. 즉, API를 문서화하기 위한 도구 라고 이해하는 것이 맞다. 그렇다면 왜 이런 도구가 필요해진걸까? 조금만 생각해보자면 현업에서 다양한 사람들과, 여러 클라이언트들에게 내가 혹은 우리회사가 만든 api 를 제공하거나 개발해야하는 경우가 많다. 이때, 이 api를 한눈에 보여주고 필요한 사항을 요..

Programming/Spring 2022.08.31

Spring - WebClient 사용해보기

개요 SpringBoot, Spring 환경에서 WebClient 를 사용하여 API Request 를 하는 클라이언트 프로젝트를 만들어보기. 서버와 API 통신을 위해 필요한게 무엇인지 알고 WebClient 의 기능사용해보기. Why ? WebClient 란? Spring 5.0에서 추가된 interface 이다. 이전 버전에서는 클라이언트로 RestTemplate 를 사용했으나, 비동기식 통신의 필요성으로 인해 WebClient 가 나오게 되었고, 현재 버전에서는 WebClient로 개발하는게 권장되는 상황이다. 그렇다면 RestTemplate 와 WebClient 가 어떤차이점이 있을까 ? RestTemplate 와 WebClient 의 차이점을 보기쉽고 간편하게 볼 수 있도록 표로 비교해보자 R..

Programming/Spring 2022.05.16

스프링부트 API - POST Method 활용하기

개요 POST Method의 의미와 종류, 이를 활용하는 방법을 알아보기 POST Method란 리소스를 전달하여 추가하기 위해 사용되는 API로 Create를 위해 사용되는 Method이다. POST API의 종류 @PostMapping : POST API를 제작하기 위해 사용되는 어노테이션, @RequestMapping + POST method의 조합, 일반적으로 추가하고자 하는 Resource를 HTTP body에 추가해서 서버에 전달하여 요청, 그렇기에 @RequestBody 를 이용해 body값을 받음 DTO : key 와 value 가 정해져있지만, 받아야할 파라미터가 많을 경우 DTO객체를 사용하는 방식 // 1. postMapping @PostMapping(value="/member") ..

Programming/Spring 2022.04.04

스프링부트 API - GET Method 활용하기

개요 API와 GET Method를 이해하고 활용하는 다양한 방법을 알아보기 GET 어노테이션의 종류 @RequestMapping : value와 method로 정의하여 API를 개발하는 방식으로 요즘 추세는 사용하지 않는 편 @GetMapping : 별도의 파라미터 없이 GET API를 호출하는 경우 사용되는 방법 @PathVariable : GET형식의 요청에서 파라미터를 전달하기 위해 URL에 값을 담아 요청하는 방법 @RequestParam : GET형식의 요청에서 쿼리 문자열을 전달하기 위해 사용되는 방법 // 1. ReqeustMapping @RequestMapping(value = "/hello", method = RequestMethod.GET) public String requestTes..

Programming/Spring 2022.04.03

스프링부트 API - REST API 란? 스프링부트로 API만들기

개요 REST API 란 무엇이며, 스프링부트에서 RESTful 한 API를 만들기위해 어떤방식으로 설계및 구현할지 알아보기위해 포스팅합니다. API 란? API는 Application Programming Interface의 줄임말로 응용 프로그램에서 사용할 수 있도록 다른 응용 프로그램을 제어할 수 있게 만든 인터페이스를 뜻합니다. API를 사용하면 내부 동작 로직을 알지못해도 정의되어 있는 기능으로 쉽게 사용할 수 있게됩니다. 여기서 Interface란 어떤 장치간에 정보 교환을 위한 수단이나 방법을 의미하며 대표적으로 마우스, 키보드 등이 해당됩니다. REST 란? REST는 Representational State Transfer 의 줄임말로 자원의 이름으로 구분하여 해당 자원의 상태를 교환하는..

Programming/Spring 2022.04.02

스프링부트 - SXSSF 형식으로 엑셀 다운로드 모듈만들기

개요 회사에 입사 후 기존의 엑셀 처리는 Jxls 방식으로 처리되었었다. 이 방식은 미리 템플릿을 원하는 페이지나 형식마다 따로 만들어야했고, 대용량의 데이터를 처리할 땐 너무 오래걸리거나 이로인해 거래처에서 여러번 시도하다가 동시에 Request 가 생겨 OOM 발생이 발생해 서버에 무리를 주는 상황이 발생한 경우도 있었다. 이런 리스크나 성능면에서 떨어져 poi 라이브러리에서 제공되는 sxssf 방식으로 변경업무를 진행했다. SXSSF 방식은 일정 용량을 넘어선 처리에선 자동으로 메모리를 관리해 서버에 부담이 적다는 점과 속도가 무난하다는 장점이 있다. 더 다양한 이유와 설명이 있겠으나, 자세한 점은 생략하고 본론으로 들어가겠다. 프로세스 기존의 프로세스는 EXCEL 버튼을 클릭할 경우, 페이지에서 ..

Programming/Spring 2022.01.05

스프링부트 기초 - 4. 게시판 수정,삭제

이전글 https://goodthinking.tistory.com/43 스프링부트 기초 - 3. 게시판 만들기 이전글 https://goodthinking.tistory.com/42 스프링부트 기초 - 2. CRUD 게시판 만들어보기 이전글 https://goodthinking.tistory.com/41 스프링부트 기초 - 1. 스프링부트 개요 & 프로젝트 설치 및 설정 개요 안.. goodthinking.tistory.com 이전글에서 CRUD 에서 Create , Read 를 구현했습니다. 수정 Update 먼저 수정하는 페이지를 만들어야겠죠.. resouces >templates >articles >edit.mustache 를 생성하겠습니다 코드로 첨부하니 전부 검정색으로 출력되서 그냥 제코드를 캡..

Programming/Spring 2021.12.07

스프링부트 기초 - 3. 게시판 만들기, 조회

이전글 https://goodthinking.tistory.com/42 스프링부트 기초 - 2. CRUD 게시판 만들어보기 이전글 https://goodthinking.tistory.com/41 스프링부트 기초 - 1. 스프링부트 개요 & 프로젝트 설치 및 설정 개요 안녕하세요. 이번에 스프링부트를 공부하면서 블로그에 정리하면 좋을것같아 찾아왔습니 goodthinking.tistory.com 이전글에서는 게시판만들기에 앞서 기본 main 페이지를 생성하고 컨트롤러를 등록했습니다. 이제 본격적인 게시판생성을 해보겠습니다. 그전에 header 를 먼저 정리하겠습니다. 필요한 부분만 남기고 일단 지워둘게요. 그리고 Main 페이지의 내용을 table 로 처리합니다. {{>layouts/header}} 번호 제..

Programming/Spring 2021.12.07

스프링부트 기초 - 2. 게시판 시작해보기

이전글 https://goodthinking.tistory.com/41 스프링부트 기초 - 1. 스프링부트 개요 & 프로젝트 설치 및 설정 개요 안녕하세요. 이번에 스프링부트를 공부하면서 블로그에 정리하면 좋을것같아 찾아왔습니다. 기존에 공부할땐 노션에 정리했는데 노션이 좋긴하지만, 블로그랑 성격이 조금 달라서 포트폴 goodthinking.tistory.com 시작 이전에는 설치와 설정을 간단하게 했습니다. 이번 포스팅부터는 간단한 게시판을 통해 CRUD를 구현해보겠습니다. 먼저 Spring Boot 는 기본적으로 톰캣 서버가 내장되어있어 따로 설정이 없어도 실행이 됩니다. 프로젝트를 실행 후 src >main >resources >static 폴더에다가 index.html 을 생성합니다. 웰컴 페이지..

Programming/Spring 2021.12.02