IT/Spring & Spring Boot 7

[IT/일상/Java] MQTT 통신 코드 개선 일지 (feat. QueueChannel, Future)

배경현재 프로젝트에서 장치와 통신하는 데에 MQTT를 사용하고 있다.MQTT가 뭔지에 대해서는 아래를 참고하자.  [IT] MQTT 프로토콜에 대해MQTT란?MQTT는 Publisher, Broker, Subscriber의 세 가지 분류로 이루어진 프로토콜이다.Publisher가 Broker 에게 특정 Topic으로 메시지를 보내면, Subscriber는 Broker로부터 받고 싶은 Topic만을 구독하여 메시지doringri.tistory.com 아무튼, 우리 장치는 어떤 토픽으로 명령에 대한 메시지를 보내면 장치가 다른 토픽을 통해 그 명령이 잘 수행됐는지 메시지를 주는 구조이다.문제는 클라이언트가 HTTP로 명령 요청을 보내면 그 명령이 성공했는지에 대한 결과를 백엔드에서 응답으로 줘야 된다는 것이..

[Spring Boot] RequestBody 필드에 값이 매핑되지 않는 문제

역직렬화가 안돼요!@RequestBody로 POJO 객체를 받을 때, 특정 필드에 값이 자동 매핑이 안 되는 문제가 가끔 발생한다.즉 프론트에서 분명히 body에 {name: "doringri"} 를 담아 보냈는데 {name: ""} 로 도착하거나 한다는 것이다.이때 boolean 형이라면 false로, int형이라면 0으로 도착할 것이다. (각 자료형의 기본값) 이러한 현상이 일어나면 먼저 필드의 이름이 같은지 다시 한번 확인하고, 컨트롤러에서 파라미터 앞에 @RequestBody 어노테이션을 붙였는지 확인한다.@PostMappingpublic void test(@RequestBody UserInfo userinfo) { ...} 문제가 없다는 것을 확인했다면 매우 높은 확률로 Jackson 문제..

[IT/Spring] 스프링 개념들 복습 (Servlet, MVC, Model, DAO)

현재 나는 백엔드를 개발할 때 스프링부트와 JPA를 사용하고 있다.문제는 계속 똑같은 것만 쓰다보니까 다른 방법론이나 개념들을 대부분 잊어먹었다.그래서 이참에 다른 것들도 정리해보려고 한다.고전적인 개념들도 포함되어 있지만 복습할 겸 해서 정리한다. 서블릿(Servlet)JSP처럼 서버에서 동적으로 웹 페이지를 생성하는 서버 측 프로그램. test package1.ServletTest test /test/test 라는 URL로 요청하면 매핑을 통해 package1.ServletTest라는 서블릿 클래스가 응답한다.아래 예시 코드를 확인해 보자. package package1;public class ServletTest extends HttpServlet { @Override publ..

[IT/Spring Boot] 스프링부트의 HttpSession에 대해

로그인 기능을 만들 때, 세션 유지를 하기 위해 Redis 등의 외부 저장소를 이용하지 않는다면 보통 브라우저의 로컬 스토리지(Local Storage)나 쿠키(Cookie)에 로그인 정보를 저장합니다. 로컬 스토리지는 로그아웃 등으로 지우기 전까지 영구적으로 남아있으며 쿠키는 만료 기간을 설정할 수 있습니다. 세션 스토리지(Session Storage) 에 저장하기도 하는데 새로고침 시엔 남아 있어도 브라우저가 닫히면 정보가 사라지기에 요즘은 로그인 기능에는 잘 사용하진 않는 추세인 것 같습니다. (일회성 로그인이 필요한 사이트 제외) 어쨌든 이런 것들은 브라우저에 저장되기 때문에 이제까지 관리도 클라이언트 사이드에서 했었는데요, 스프링부트에서 제공하는 HttpSession을 이용하면 서버나 Redis..

[Spring Boot/SSL] PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException 에러 해결

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://www.xxxx.xxx": PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target] with root causesun.sec..

[TDD] Junit으로 Spring Boot에서 TDD(Test-Driven Development)를 통해 로그인 기능 구현하기

[TDD] 실전에서 사용해본 TDD(Test-Driven Development) 현재 회사에서 TDD 방식으로 개발중에 있습니다. TDD를 도입한 건 현재 진행 중인 프로젝트부터라 경험이 많지는 않지만, 조금이나마 도움이 되실 분들이 있을까 해서 포스팅합니다. 사실 테스트 doringri.tistory.com 얼마 전에 저런 글을 썼었는데요, 솔직히 저 같아도 저것만 보곤 TDD에 대해 안 와닿습니다. 그래서 직접 Junit으로 구현하는 과정을 포스팅해보려 합니다. Junit이란? Junit은 Java 코드 검증을 지원하는 테스트 코드 프레임워크입니다. 테스트 코드 하면 가장 먼저 생각나는 유명한 프레임워크인 xUnit 시리즈 중 하나입니다. testImplementation 'org.junit.jupi..