반응형

Programming/Spring Boot 101

SpringBoot 웹소켓(WebSocket) 채팅 프로그램 파헤치기

HTTP 통신과 Socket 통신에 대해서 간단하게, HTTP(HyperText Transfer Protocal) 통신이란, HTML 파일을 전송하는 프로토콜이라는 의미로 초기에는 HTML 파일을 전송하는 것이 목적이었으나, 현재는 JSON, Image 등의 파일들도 전송이 가능합니다. HTTP 통신은 클라이언트에서 서버로 요청을 보내고, 서버가 요청에 응답하는 방식으로 통신이 이뤄집니다. 즉, 클라이언트의 요청이 있을 때만 서버가 응답하는 '단방향' 통신입니다. 반면에 Socket 통신은 두 프로그램이 서로 데이터를 주고 받을 수 있는 양쪽 프로그램 모두에 생성되는 통신 단자를 사용하는 '양방향' 통신입니다. 채팅이나 주식, 게임처럼 실시간으로 데이터를 주고 받는 경우 Connection을 자주 맺고 ..

네이버 클라우드 플랫폼 문자 발송 API 사용하기 (Spring Boot)

Simple & Easy Notification Service SMS, PUSH, 카카오 알림톡 등을 사용할 수 있는 서비스입니다. SMS의 경우 건당 9원, PUSH의 경우 건당 0.02원, 알림톡의 경우 건당 7.5원 등 비용이 발생합니다. (자세한 비용은 네이버 클라우드 플랫폼에서 확인 가능합니다.) * 월 무료 구간 (SMS 50건, PUSH 2000건)이 있기 때문에 토이프로젝트를 하며 사용해봤습니다. 문자 발송 API를 사용하기 위해 먼저 서비스에 가입을 해야합니다. 이후 Simple & Easy Notification Serive에서 프로젝트를 생성합니다. SMS API - SENS api.ncloud-docs.com 플랫폼에서 제공하는 API 사용 가이드입니다. 실제 예시 코드와 필수, 옵..

JPA @CreatedDate @LastModifiedDate 생성 시간, 수정 시간이 저장되는 원리

@CreatedDate, @LastModifiedDate 데이터를 저장할 때 '생성된 시간 정보'와 '수정된 시간 정보'는 여러모로 많이 사용되고 또 중요합니다. JPA를 사용하면서 @CreatedDate, @LastModifiedDate를 사용하여 생성된 시간 정보, 수정된 시간 정보를 자동으로 저장할 수 있는데요. 오늘 작업 중에 createAt, updatedAt 값이 계속 null로 들어가던 문제를 해결하면서 동작 원리에 대해 조금 더 살펴본 내용을 정리합니다. (null이 들어간 원인은 main method가 실행되는 Application class에 @EnableJpaAuditing 어노테이션을 적용하지 않아서였습니다.) * 내용 중 자주 등장할 'audit' 는 심사, 감사하다는 뜻입니다. ..

스프링부트 REST API Excel download 방법

Spring boot REST API Excel download 기본적인 방법 (feat. apache poi) 스프링 부트 REST에서 poi 라이브러리를 사용하여 엑셀을 다운로드하는 방법입니다. poi 라이브러리는 아파치 소프트웨어 재단에서 만들었고, microsoft office 파일 포맷을 자바 언어로 읽고, 쓰는 기능을 제공하는 라이브러리입니다. 작업 환경은 아래와 같습니다. 'org.springframework.boot' version '2.4.10-SNAPSHOT' java 1.8 Gradle // https://mvnrepository.com/artifact/org.apache.poi/poi implementation group: 'org.apache.poi', name: 'poi', ve..

@NotNull @NotEmpty @NotBlank 차이점 한번은 알고 가자

@NotNull @NotEmpty @NotBlank javax.validation.constraints package에 포함된 기능으로 api에서 값을 입력받을 때 validation 체크를 위해 사용되는 어노테이션입니다. 많이 사용하게 되는 어노테이션으로 한 번만 차이를 확실히 알고 나면 용도에 맞게 잘 사용할 수 있습니다. @NotNull 먼저 NotNull 입니다. The annotated element must not be null. Accepts any type. NotNull은 말 그대로 null 값만 허용하지 않습니다. 그렇기 때문에 "", " " 가 입력되었을 경우는 허용하게 됩니다. @NotEmpty 다음으로 NotEmpty 입니다. The annotatd element must not ..

RestTemplate 4xx, 5xx Code 처리하는 방법 (HttpClientException)

RestTemplate이란 간략하게 spring framework 3.0부터 지원되는 http 통신에 사용되는 템플릿입니다. RESTful 형식을 따르며 json, xml 형식의 데이터를 쉽게 받을 수 있습니다. * RestTemplate에 대한 자세한 내용은 다루지 않고 해당 에러에 관한 내용만 다루는 포스팅입니다. { "state": 400, "data": [], "result": "fail", "message": "QR 코드의 유효기간이 지났습니다.", "error": [] } RestTemplate의 문제점 중 하나는 위 예시의 json 데이터 처럼 4xx, 5xx의 응답 코드를 받았을 때 Exception을 발생시킨다는 것인데요. 통신을 하다보면 200 상태의 success 뿐만 아니라 4xx,..

JWT + Redis Logout 로그아웃 구현하기

Spring Security + JWT 로그인 기능 파헤치기 - 1 로그인 기능은 거의 대부분의 애플리케이션에서 기본적으로 사용됩니다. 추가로 요즘은 웹이 아닌 모바일에서도 사용 가능하다는 장점과 Stateless 한 서버 구현을 위해 JWT를 사용하는 경우를 많 wildeveloperetrain.tistory.com Spring Security + JWT + Redis + JPA 사용한 로그인 구현의 마지막 Logout 포스팅입니다. Spring Security + JWT 기능 파헤치기 1, 2 포스팅과 Redis를 사용하여 RefreshToken을 저장하는 포스팅에 이어 4번째 포스팅입니다. (이전 내용은 위 링크를 참고 부탁드리겠으며, 전체 코드 GitHub 주소 및 참고 내용은 맨 하단에 링크해두..

security + jwt + redis 로그인 기능 구현 (최종)

이전 Spring Security + JWT 로그인 구현에서 마지막으로 Refresh Token 저장을 위한 Redis를 추가하고, 토큰 재발급 기능을 추가하여 로그인 기능을 완성하였습니다. Spring Security + JWT 로그인 기능 파헤치기 - 1 로그인 기능은 거의 대부분의 애플리케이션에서 기본적으로 사용됩니다. 추가로 요즘은 웹이 아닌 모바일에서도 사용 가능하다는 장점과 Stateless 한 서버 구현을 위해 JWT를 사용하는 경우를 많 wildeveloperetrain.tistory.com 앞서 포스팅 한 Security + JWT 로그인 구현 과정입니다. 이어지는 내용이기 때문에 참고 부탁드리겠습니다. Spring Boot Redis 두 가지 사용 방법 RedisTemplate, Red..

spring security + JWT 로그인 기능 파헤치기 - 2

Spring Security + JWT 로그인 기능 파헤치기 - 1 로그인 기능은 거의 대부분의 애플리케이션에서 기본적으로 사용됩니다. 추가로 요즘은 웹이 아닌 모바일에서도 사용 가능하다는 장점과 Stateless 한 서버 구현을 위해 JWT를 사용하는 경우를 많 wildeveloperetrain.tistory.com 전 포스팅에서 이어지는 내용입니다. 참고 부탁드리겠습니다. public ResponseEntity login(UserRequestDto.Login login) { // 1. Login ID/PW 를 기반으로 Authentication 객체 생성 // 이때 authentication 는 인증 여부를 확인하는 authenticated 값이 false UsernamePasswordAuthenti..

spring security + JWT 로그인 기능 파헤치기 - 1

로그인 기능은 거의 대부분의 애플리케이션에서 기본적으로 사용됩니다. 추가로 요즘은 웹이 아닌 모바일에서도 사용 가능하다는 장점과 Stateless 한 서버 구현을 위해 JWT를 사용하는 경우를 많이 볼 수 있는데요. 많이 사용되고, 또 주된 기능인만큼 꼭 한 번은 제대로 공부하고 싶어서 여러 자료를 참고하여 직접 구현하며 정리하는 내용입니다. (현재 코드는 Security + JWT + JPA 를 사용하여 구현되어 있고, 이후 최종적으로 Redis를 사용한 토큰 재발급 과정까지 추가할 예정입니다.) * 본 내용을 보기 전 참고하면 좋을 JWT, Spring Security 동작 원리, 구현된 코드 등은 포스팅 맨 아래 참고 자료로 링크를 첨부해놓았습니다. 도움이 되시길 바라며, 내용 중 잘못된 부분은 지..

반응형