개발은 재밌어야 한다
article thumbnail
[MSA] Hystrix 와 resilience4j를 통한 circuit breaker
Spring/Spring 2023. 8. 30. 10:22

MSA 환경에서의 장애 양상MSA에서 더 위험한(빈번한) 실패 시나리오는 서버가 완전히 뻗어버리는게 아니라,버벅거리지만 동작하는 서버가 더 위험할 수 있다. Feign Client와 같이 호출하는 쪽에서는 다른 서비스로 호출을 동기식으로 하기 때문에 응답에 오랜 시간이 걸리더라도 호출을 중단하지 않기 때문입니다. 위 처럼 A,B,C의 서비스가 MSA를 구성하고 있다고 했을때. 서비스 C는 DB를 읽어오는 역할을 하고 있습니다. 지속적으로 DB에서 응답 지연이 발생하고 있는 상황에서 서비스 B가 지속적으로 C를 호출하게 된다면 C에서는 DB에 붙는 커넥션 풀이 고갈되고, B는 C를 반복 호출하면서 C의 스레드 풀을 모두 소진하게 된다. 서버 A 역시 B의 스레드 풀이 소진되면 장애가 발생할 가능성이 높습니..

article thumbnail
엑셀 다운로드 에러 발생 해결 - FontConfiguration에서 NullPointerException 발생
Spring/Spring 2023. 4. 5. 19:19

엑셀 다운로드 기능이 갑자기 안되는 일이 생겨났다 에러 로그를 살펴보니 FontConfiguration쪽에서 NPE(NullPointerException)가 발생했다 발생로그 더보기 org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.InternalError: java.lang.reflect.InvocationTargetException org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.InternalError: java.l..

article thumbnail
스프링 부트 config 사용법
Spring/Spring 2022. 7. 12. 14:01

스프링 부트에서 컨피그 서비스 사용법 1 Spring에서 제공하는 Environment를 활용하는 방법이다. Legacy( Spring3.x) 에서 사용한 방법과 동일하다. 사용법 2가 스프링 부트에서 권장하는 방법이다. @Slf4j @Service public class TempService { @Autowired private ConfigurableEnvironment environment; public void test() { environment.getProperty("gateway.test"); } } 스프링 부트에서 컨피그 서비스 사용법 2 스프링부트에서 지원하는 @ConfigurationProperties를 활용하는 방법이다. 스프링 부트에서 설정이 편리해진 이유 중 하나이다. https:/..

article thumbnail
@RequiredArgsConstructor란?
Spring/Spring 2022. 6. 10. 19:08

Lombok으로 스프링에서 DI(의존성 주입)의 방법 중에 생성자 주입을 임의의 코드없이 자동으로 설정해주는 어노테이션이다. @RequiredArgsConstructor는 초기화 되지않은 final 필드나, @NonNull 이 붙은 필드에 대해 생성자를 생성해 줍니다. 새로운 필드를 추가할 때 다시 생성자를 만들어서 관리해야하는 번거로움을 없애준다. (@Autowired를 사용하지 않고 의존성 주입) 예시) @RequiredArgsConstructor 를 사용한 예시 @RestController @RequiredArgsConstructor @RequestMapping("/example") public class RequiredArgsConstructorControllerExample { private f..

article thumbnail
spring-boot-starter-data-rest가 어떻게 Rest API 주소를 자동 생성해주는가?
Spring/Spring 2022. 1. 9. 00:54

스프링 부트에서 REST URL을 자동으로 생성해주는 spring-boot-starter-data-rest가 어떻게 주소를 자동으로 생성해서 Rest URL을 생성해주는가에 대해서 알아보겠습니다. 우선 공식 문서 스프링 데이터의 공식문서를 참조해서 보겠습니다. https://docs.spring.io/spring-data/rest/docs/current/reference/html/ Spring Data REST Reference Guide Spring Data REST presents a default view of the domain model you export. However, sometimes, you may need to alter the view of that model for various ..

article thumbnail
스프링 (Spring Vue) 게시판 만들기 #14. 글 삭제 구현 (마지막)
Spring/게시판 만들기 2021. 12. 13. 23:57

CRUD의 마지막인 D(Delete) 삭제를 구현해 보도록 하겠습니다. 글 상세보기에서 수정 옆에 삭제 버튼을 넣어서 해당 게시글을 삭제하도록 구현을 해보겠습니다. 삭제 버튼과 해당 버튼 클릭 시 메서드를 구현 BoardDetail에 구현해줍니다. 75번째 라인을 보면 reload 메소드를 사용해 목록을 리로드 하는 메소드도 사용해 주도록 합니다. 글 번호 : {{ boardDetail.bno }} 제목 : {{ boardDetail.title }} 등록일 : {{ boardDetail.regDate }} 내용 : {{ boardDetail.content }} 작성자 : {{ boardDetail.writer }} 수정 삭제 Controller와 Service 코드도 작성해 주도록 합니다. package..

article thumbnail
스프링 (Spring Vue) 게시판 만들기 #13. 글 수정 구현
Spring/게시판 만들기 2021. 12. 13. 23:20

안녕하세요 이번에는 글 수정을 구현해보도록 하겠습니다. 글 수정은 글 상세보기에서 버튼을 누르면 수정하는 폼을 보여주도록 하는 방식으로 구현해보겠습니다. 기존에 구현되어 있는 글 상세보기입니다. 우선 기존의 글 상세보기를 컴포넌트화 하는 작업을 해주도록 하겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 import axios from 'axios'; import moment from 'moment'; import BoardDetail from './BoardDetail';..

article thumbnail
스프링 (Spring Vue) 게시판 만들기 #12. 글 상세보기 구현
Spring/게시판 만들기 2021. 11. 29. 21:36

이번 포스팅에서는 글 목록에서 글 상세보기를 즉 CRUD에서 R에 해당하는 Read를 구현해보도록 하겠습니다. 현재 상태는 이렇게 되어 있는데 테이블을 클릭하면 팝업을 띄워 글에 대해 상세한 내용을 보여주는식으로 간단하게 구현을 해보도록 하겠습니다. 일단 Element-ui에서 테이블을 행(row)을 클릭할때 emit으로 row-click을 보내고 해당 파라미터에는 row,column,event에 대한 정보를 파라미터에 담아서 보내줍니다. 일단 저 row-click을 코드를 통해서 확인해 보겠습니다. rowCilick으로 정의된 데이터의 정보를 한번 확인해보기위해 row데이터를 콘솔로 확인해보겠습니다. row의 데이터와 column의 데이터, 해당 event에 대한 값을 확인해 볼 수 있습니다. 테이블에..

article thumbnail
스프링 (Spring Vue) 게시판 만들기 #11. 글등록 한글 오류 및 등록 후 목록 리로드
Spring/게시판 만들기 2021. 11. 28. 04:33

저번 포스팅에서 글 등록에 관한 구현을 진행해봤습니다. 한글로 제목에는 제목테스트, 내용에는 내용테스트로 등록을 진행해보겠습니다. 해당 에러를 보니까 타이틀에 들어가는 값이 '\xEC\xA0\x9C\xEB\xAA\xA9...'이런식으로 되어있는것으로 UTF-8 인코딩 부분이 문제가 있는것 같습니다. 해당 테이블에 chartset을 utf-8로 바꾸어 줍니다. ALTER TABLE board CONVERT TO CHARSET utf8; 다시 한글로 된 내용을 정상적으로 에러없이 등록이 되는 것을 확인 할 수 있습니다. 등록후에도 아무런 변화가 없어서 등록이 잘 된건지 화면에서는 확인 할 방법이 없습니다. 정상적으로 되면 등록이 완료된다면 창을 닫고 목록도 다시 로딩하도록 하곘습니다. 현재는 등록을 서버에 ..

article thumbnail
스프링 (Spring Vue) 게시판 만들기 #10. 글 등록 구현 (Front-End)
Spring/게시판 만들기 2021. 11. 14. 23:00

이번 포스팅에서는 글 등록을 구현해 보도록 하겠습니다. 우선 Vue 부분에 컴포넌트를 조금 정리하고 가도록 하겠습니다. 제일 처음 생성되는 App.vue에서 상단에는 Vue 이미지 파일과 HelloWordl 컴포넌트를 통해서 첫화면을 보여주고 있습니다. 해당 부분을 조금 바꿔 볼까 합니다. HelloWorld컴포넌트를 BoardList.vue로 변경해주고 상단에 이미지 부분은 글 등록하는 컴포넌트를 넣어보도록 하겠습니다. 우선 HelloWorld.vue 파일을 BoardList.vue로 이름을 변경합니다. 기존에 HelloWorld.vue => BoardList.vue 로 변경했으면 name에도 마찬가지로 BoardList로 변경을 해주도록 하겠습니다. 이번에는 App.vue로 가서 import 부분을 ..

article thumbnail
스프링 (Spring Vue) 게시판 만들기 #9. FrontEnd 데이터 테이블로 표현하기
Spring/게시판 만들기 2021. 11. 14. 04:10

이번에는 저번에 화면에 보여진 데이터(JSON)들을 테이블 형태로 표현하도록 하겠습니다. 프론트 라이브러리로는 Element-ui를 사용하도록 할겁니다. https://element.eleme.io/#/en-US Element - The world's most popular Vue UI framework element.eleme.io 뭐 element-ui말고도 bootstrap-vue등 여러 라이브러리들이 많지만 제가 실무에서 사용하는 라이브러리이기도 하고 쉽게 사용할 수 있는 라이브러리라고 생각되어서 해당 라이브러리를 사용하겠습니다. 우선 frontend폴더에서 yarn add element-ui를 통해서 패키지파일을 설치하도록 하겠습니다. 정상적으로 설치되었는지 package.json을 확인해보겠습..

article thumbnail
스프링 (Spring Vue) 게시판 만들기 #8. BackEnd 데이터를 FrontEnd에 표현
Spring/게시판 만들기 2021. 11. 14. 00:54

안녕하세요. 너무 오랜만에 포스팅을 이어 나가서 죄송합니다... 그동안 회사 프로젝트와 개인 토이프로젝트랑 개발 공부까지 하다가 보니 시간이 정신없이 흘러 글을 쓸 생각조차 못했습니다... 천명만 넘어도 좋겠다라는 블로그의 방문자수는 어느덧 4000이 넘는 수의 방문자를 기록하였습니다 블로그명도 몽상개발자에서 개발은 재밌어야 한다로 바꾸었습니다...! 토이프로젝트나 잡담에 대한 내용들은 앞으로 NullPointerException 카테고리(Null 채우겠다라고 바뀔수도 있습니다...)에 게시물을 통해서 작성하도록 하고 이만 본론에 들어가겠습니다. 저번 포스팅에서 만든 프로젝트를 이어 가보도록 하겠습니다. 우선 포스팅한지 너무 오랜기간이 지나서 github에 올라가있는 마지막 프로젝트를 기준으로 다운을 받..