본문 바로가기

spring & java8

[Spring] Spring Security + OAuth2 + JWT 이번 개인 프로젝트에서 Spring Security를 활용하여 OAuth2 로그인을 구현했다. Spring Security의 OAuth2를 활용하는 방법과 JWT 발급까지 모두 정리해보려고 한다.참고) 개발 환경은 Spring boot 3, Java 17을 사용하였다.먼저 OAuth 2.0이 무엇인지 알아보자.OAuth 2.0 (Open Authorization 2.0)인증을 위한 개방형 표준 프로토콜로, third-party 프로그램에게 리소스 소유자를 대신해 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식으로 작동된다. 쉽게 말해서 third-party 프로그램(구글, 카카오 등)에게 로그인 및 개인정보 관리에 대한 권한을 위임하여 third-party 프로그램이 가지고 있는 사용자에.. 2024. 1. 22.
[Spring] SSE + Redis pub/sub 이번에 개인프로젝트를 진행하면서 실시간 알림을 구현했는데, 해당 내용에 대해 정리해보고자 한다. 먼저 SSE에 대해 이해를 해야한다. SSE 전통적인 방식 웹 브라우저에서 전통적으로 변경된 데이터를 얻기 위해서는 클라이언트가 서버에 요청을 해야한다. 대표적인 방식이 Polling이다. Polling은 일정한 주기를 가지고 서버에 요청/응답을 하는 방식으로 서버에 변경 사항이 있는지는 클라이언트의 요청을 통해서 알 수 있다. 이는 클라이언트가 요청을 보냈을 때 변경 사항이 없다면 리소스 낭비가 되고, 짧은 주기로 지속적으로 요청하는 것은 서버에 부담이 될 수 있다. Polling을 개선한 방식이 Long-polling인데, 이는 클라이언트가 요청을 보냈을 때 서버측에서 연결을 열어두는 시간을 길게 가진다... 2024. 1. 18.
[Spring] 스프링 부트 핵심 가이드 - API 작성 기초 스프링 부트 핵심 가이드 - 04, 05장. 이번 장에서는 API를 작성하는 방법 중 Controller 계층에서의 작성 방법에 대한 내용이다. 컨트롤러를 보기 전에 먼저 웹에서 통신하는 방법부터 알아야 할 것 같다. HTTP 웹 상에서는 모든 것이 HTTP로 이루어 진다. HTTP는 Server/Client 모델로 클라이언트가 Request(요청)를 보내면 서버가 Response(응답)를 내려주는 방식으로 동작한다. HTTP Request/Response Request GET / HTTP/1.1 # 요청 메소드 / HTTP 버전 Host: www.fun-coding.org Connection: keep-alive Response HTTP/1.1 200 OK Server: Apache # 웹 서버 정보 .. 2023. 10. 29.
[Spring] 스프링 부트 핵심 가이드 - Spring 기초 지식 스프링 부트 핵심 가이드를 읽고 정리한 내용이다. 이번 파트(part 01, 02, 03)는 개발에 들어가기 전에 알아야 할 지식에 대한 전반적인 설명이다. 스프링 프레임워크 스프링 프레임워크(Spring Framework)는 자바 기반의 엔터프라이즈급 애플리케이션을 개발하기 위한 다양한 기능을 제공하는 프레임워크이다. (*엔터프라이즈급 개발 : 대규모 데이터를 처리하는 환경을 대상으로 하는 애플리케이션 개발) 자바 기반 프레임워크 중 부동의 1위인 스프링의 핵심 가치는 이러하다. "애플리케이션 개발에 필요한 기반을 제공해서 개발자가 비즈니스 로직 구현에만 집중할 수 있게끔 하는 것" 처음 스프링을 접할 땐 이해하지 못하고, 개발을 도와주는 프레임워크면 당연한거 아닌가? 라고 생각했던 시절도 있었다. 하.. 2023. 10. 22.
[Spring] Spring AOP 적용 데이터베이스 업데이트 프로젝트에서 테이블 별 업데이트 된 현황을 명세 테이블에 저장하는 기능을 구현해야 했다. 이 기능의 핵심 동작은 모두 같기 때문에 공통적으로 사용할 수 있도록 모듈화(하나만 만들어서 재사용)를 시키고 싶었다. 그래서 공통 기능을 모듈화하여 자동적으로 수행할 수 있도록 해주는 AOP를 적용하게 되었다. AOP란? Aspect Oriented Programing으로 관점 지향 프로그래밍으로 객체 지향을 보완하는 수단이다. 공통 관심사(Aspect)를 모듈화하여 비즈니스 로직을 헤치지 않고 재사용하는 프로그래밍 기법이다. 공통 관심사는 쉽게 말해서 여러 클래스에서 반복적으로 사용되는 공통 로직이라고 이해하면 된다. Spring에서 AOP는 프록시 패턴을 기반으로 설계되어 있다. Proxy.. 2023. 6. 19.
[Java] 비동기 + multi threading 구현 데이터베이스 업데이트 프로젝트를 진행하던 때에 데이터를 가공하는 작업을 수행하는데 시간이 매우 오래 걸리는 부분이 있었다. 업데이트를 위해 수집해온 데이터가 8천만개 이상인 상황에서 싱글 쓰레드로 수행하면 완료 시간이 말도 안되는 시간이 예상되어 멀티 쓰레딩을 통한 시간 단축이 필수라고 생각되었다. 구현 로직 구현은 java 8에서 비동기 요청을 처리할때 사용하는 객체인 CompletableFuture를 사용하였다. 1. 데이터 가공 2. 가공한 데이터를 저장 1번 완료 후 리턴값을 받아서 2번을 수행하는 과정을 모두 비동기 작업으로 병렬처리한다. ThreadPoolTaskExecutor 별도의 thread pool을 생성하여 실행하기위해 Executor를 설정하여 bean으로 등록해둔다. @Config.. 2023. 3. 1.