스프링 9

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

스프링부트 - 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

스프링부트 기초 - 1. 스프링부트 개요 & 프로젝트 설치 및 설정

개요 안녕하세요. 이번에 스프링부트를 공부하면서 블로그에 정리하면 좋을것같아 찾아왔습니다. 기존에 공부할땐 노션에 정리했는데 노션이 좋긴하지만, 블로그랑 성격이 조금 달라서 포트폴리오처럼 남기고, 다른사람에게 피드백? 이나 보여줄 수 있는 부분이 블로그가 더 클것같아서 블로그로 정리해보도록 하겠습니다. 설치 먼저 스프링부트를 설치 하기전, IDE를 정해야하는데요 기존의 프로젝트에서 저는 Eclipse, STS 를 활용했지만, 이번에는 IntelliJ 무료 버전인 CE버전을 활용하여 해보겠습니다. IDE의 설치는 인텔리제이의 회사 젯브레인 홈페이지에서 가능하며, 저는 MAC 환경이기에 링크가 mac 입니다. https://www.jetbrains.com/ko-kr/idea/download/#section=..

Programming/Spring 2021.12.02

Spring - DI 그리고 IoC

이전에 포스팅에서 Spring의 개요중 DI 와 IoC를 언급했었다. Spring에 Core 기능이라고 할 수 있으며, 핵심 기능인 만큼 대단히 중요도가 높다고 할수있겠다. 이번 글에서는 DI 와 IoC에 대한 개념을 알아보자. Spring IOC ( Inversion Of Control ) IoC (반전제어) 란? - Inversion of Control 의 약자로 프로그램을 구동하는데 필요한 객체에 대한 생성, 변경등의 관리를 프로그램을 개발하는 사람이 아닌 프로그램을 구동하는 컨테이너에서 직접 관리하는 것을 말한다. 기존의 웹 애플리케이션에서는 소스코드의 제어권은 오로지 개발자가 직접관리하며 권한을 가지고 있었지만, Spring에서는 소스코드의 제어권을 컨테이너가 라이브러리로 제공하며 개발자는 온전..

Programming/Spring 2021.10.09

Spring 의 기본 동작순서와 구조 MVC

먼저 스프링의 기본 동작순서와 구조를 살펴보자. 1. Client : URL 로 접근하여 정보를 요청한다. 2. View : 화면단에서 보여주기 위해 요청을 전송 3. DispatcherServlet : (web.xml 에 포함, Spring에서 제공) 해당 요청을 Mapping 한 컨트롤러가 있는지 검색한다. 4. HandlerMapping : (xxx.xml 에 포함[Servlet설정파일] Spring 에서 @RequestMapping()을 통해 제공 ) 처리 요청 - Bean등록 5. Controller : (@RequestMapping(value="ex.do")) DTO(데이터 전송 객체)를 이용해 Data를 전송 6. Service : DTO를 이용해 Data를 전송 7. DAO : (Data ..

Programming/Spring 2021.10.08

Spring 의 개요

스프링의 개요 Java 언어를 사용하면 꼭 사용하게 되는 대세 프레임워크인 스프링 ! 어째서 많은 프레임워크 중 스프링을 사용하는지, 스프링이란 무엇인지 핵심개념부터 살펴보자 Spring Framework 란? 자바 오픈소스 애플리케이션 프레임워크로 간단하게 Spring 이라 불린다. 동적인 웹 사이트를 개발하기 위한 여러가지 서비스를 제공하고 있으며, 공공기관의 웹 개발 시 사용을 권장하고 있는 전자정부 표준 프레임워크의 기반 기술로서 쓰인다. 가장 큰 특징은 의존성주입 (DI, Dependency Injection) 과 제어 반전(IOC, Inversion of Control) 이 있으며 그 외에도 Spring AOP, POJO 등이 존재한다. 이 특징들을 이용해 결합도를 낮추는 방식으로 어플리케이션..

Programming/Spring 2021.10.08