본문 바로가기

전체 글57

[Java] Java 함수형 프로그래밍 Java 함수형 프로그래밍 자바는 Java 8 버전부터 함수형 프로그래밍을 지원하기 위해 람다(lambda)와 스트림(stream)이 도입되었다. 람다와 스트림을 사용하면 함수형 프로그래밍 스타일로 자바 코드를 작성할 수 있다. 물론 람다와 스트림을 사용하여 작성한 코드를 일반 스타일의 자바 코드로 바꾸어 작성하는 것이 불가능하지는 않다.  달리 말하면 람다와 스트림 없이도 자바 코드를 작성하는 데 어려움이 없다는 뜻이다. 그런데도 람다와 스트림을 사용하는 이유는 작성하는 코드의 양이 줄어들고 읽기 쉬운 코드를 만들 수 있기 때문이다. 아래 예시가 명령형 프로그래밍과 함수형 프로그래밍의 예시이다.public class DeploytestApplication { public static void main(.. 2024. 8. 27.
[Server] What is JWT ( Json Web Token ) JWT ( Json Web Token)현대 웹서비스에서는 토큰을 사용하여 사용자들의 인증 작업을 처리하는 것이 가장 좋은 방법이다. 현재 토큰 기반 인증 시스템에서 가장 많이 사용되는 것이 JWT이다.먼저 JWT는 Json Web Token의 약자로 Json객체를 이용해서 토큰 자체의 정보를 저장하고 있는 웹 토큰이다. JWT는 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달한다. 이는 암호화된 토큰으로 복잡하고 읽을 수 없는 문자열 형태로 저장되어 있다.  JWT 구조JWT는 Header, Payload, Signature의 3 부분으로 이루어지며, Json 형태인 각 부분은 Base64Url로 인코딩 되어 표현된다. 또한 각각의 부분을 이어 주기 위해 ' . ' .. 2024. 8. 26.
[Server] 토큰 기반 인증 & 세션 기반 인증 Authentication (인증) /  Authorization (인가) 세션 기반 인가와 토큰 기반 인가에 대해 알아보기 이전에 먼저, 인증과 인가가 무엇인지부터 알아야 할 필요가 있다. 인증과 인가를 같거나 비슷한 개념이라고 생각하는 사람들이 많을 텐데, 엄밀하게는 서로 다른 개념이다. 인증과 인가는 시스템의 자원을 적절하고 유효한 사용자에게 전달하고 공개하는 방법이다. Authentication (인증)인증은 쉽게 말하자면, 로그인을 뜻한다.클라이언트가 자기 자신이라고 주장하고 있는 사용자가 맞는지를 검증하는 과정이다. 예를 들어 로그인 화면에서 내가 아이디와 패스워드를 입력해 제출하면, 서버에서는 내가 입력한 아이디와 패스워드에 대해 유효한 사용자가 맞는지 확인한다.이와 같은 로그인 과정을 인증.. 2024. 8. 26.
[Spring boot] Spring Boot 3.2 RestClient의 등장 Spring Http ClientSpring Framework는 RestTemplate, WebClient와 같은 Http Client를 지원하고 있다. 하지만 이들은 각각 문제점을 가지고 있었다. 대표적으로 RestTemplate은 사용이 직관적이지 못하며, Blocking 동기식으로 동작한다.따라서 서비스 로직이 굉장히 복잡하거나 오래 걸릴 경우 쓰레드 차단으로 인해 지연이 발생할 수 있다. Spring Framework 3.0 버전에 도입된 후, Template과 유사한 클래스에 Http의 모든 기능을 노출하면, 너무 많은 메소드가 overload 된다는 문제가 존재하였다. 따라서 Spring Framework 5에서는 RestTemplate 대신 리액티브 프로그래밍 기반인 WebClient를 사용.. 2024. 8. 18.
[Spring boot] Spring의 다양한 에러 처리 HandlerExceptionResolver이전 포스트에서 HandlerResolverException를 구현하는 구현체를 만든 후,직접 Media Type에 따라 에러 처리에 대한 뷰 템플릿 및 데이터 반환을 진행하였다.하지만 모든 예외에 대해서 구현체를 만드는 것은 너무 복잡하고 시간이 많이 든다.따라서 Spring에서 제공해 주는 HandlerResolverException의 구현체를 이용하는 것이 좋다.빈으로 등록되어 관리되는 구현체는 총 4개로 다음과 같다.DefaultErrorAttributes에러 속성을 저장하며 직접 예외를 처리하지는 않는다.ExceptionHandlerExceptionResolver에러 응답을 위한 Controller나 ControllerAdvice에 있는 Exceptio.. 2024. 8. 18.
[Spring boot] HandlerExceptionResolver Custom 예외 처리 HandlerExceptionResolver이 전 포스팅에서 Spring에서 Default 예외 처리 및 예외 처리 추상화를 위한 HandlerExceptionResolver 인터페이스를 소개하였다. 해당 인터페이스는 발생한 Exception을 catch 하고 HTTP 상태나 응답 메시지 등을 설정한다. [Spring boot] Spring boot의 예외 처리 방법Spring boot Default 예외 처리예외 처리는 웹 애플리케이션을 만드는 데 있어서 중요한 부분을 차지한다.Spring Framework는 다양한 예외 처리 방법을 제공하고 있다.그중에서 먼저 기본적인 예외 처리kyu-nahc.tistory.com Spring MVC는 컨트롤러(핸들러) 밖으로 예외가 던져진 경우 예외를 해결하고,동작.. 2024. 8. 16.

loading