| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- factory
- nestjs
- lombok
- OAuth 2.0
- middleware
- synchronized
- Volatile
- 일급 객체
- java
- Google OAuth
- 일급 컬렉션
- Dependency Injection
- Spring
- spring security
- builder
- Today
- Total
목록java (5)
HJW's IT Blog
이번 사이드 프로젝트를 진행하며, OAuth 2.0 에 더불어 JWT 인증 시스템을 채택하여 진행하였다.OAuth 2.0 FlowClient 의 로그인 요청 : GET /api/oauth2/authorize/{provider} 로 요청을 보낸다서버는 돌아올 콜백 URI 를 포함한, 제공자에 맞는 URL 로 리다이렉션을 한다클라이언트가 제공자의 페이지에서 승인을 한다제공자는 콜백 URI 을 사용해 서버의 엔드포인트에 인증 코드를 포함해 보낸다서버는 해당 인증 코드를 가지고 다시 제공자에 Token요청을 한다Token 이 유효하다면, 제공자는 미리 명시된 (ex. email, providerId) 데이터를 서버로 보내준다.Spring Security 를 사용하게되면, 2 ~ 5번의 과정을 자동으로 진행해 준..
들어가며현대 소프트웨어 개발에서 멀티스레드 프로그래밍은 빠질 수 없는 핵심 주제중 하나이다. 여러 스레드가 하나의 프로그램을 구성하여 조작할 때, 여러 이점이 있지만, 동시성 문제, 일관성 등의 문제또한 야기한다.본격적으로 Volatile 에 대해 이야기 하기 전, 변수 가시성 에 대해 이해하고 넘어가야 한다. 변수 가시성 문제 란 하나의 스레드가 특정 변수의 값을 변경 했을 때, 다른 스레드에서 그 변경 사항을 즉각적으로 확인하지 못하는 상황을 의미한다. 다음 코드를 한번 보자class SharedResource { private boolean flag = false; public void setFlagTrue(){ this.flag = true; } public void waitForFlag()..
들어가며빌더 패턴은 왜 써야 할까? 이 질문은 빌더 패턴을 공부하는 과정에서 끊임없이 던졌던 핵심 의문이었다. 개발자로서 중요한 덕목 중 하나는 무언가를 선택하고 사용할 때 그에 대한 명확한 “이유”를 가져야 한다는 것이다. 단순히 “빌더 패턴이 좋다고 하니까”라는 이유로 사용한다면, 나중에 누군가 “빌더 패턴을 왜 사용하셨나요?”라고 물었을 때 설득력 있는 대답을 하기 어려울 것이다.0. 빌더 패턴의 배경1.1 점층적 생성자 패턴의 한계점층적 생성자 패턴은 객체 생성을 위한 전통적인 방식이다. 이 패턴의 구조는 다음과 같다.public class Pizza { private final String dough; // 필수 private final String sauce; //..
들어가며개발에 있어 일급 객체와 컬렉션은 OOP 와 함수형 프로그래밍 둘 다에서 매우 중요한 개념이다. 일급 객체/컬렉션은 단순히 기술적인 개념을 넘어, 코드의 가독성, 유지보수성, 확장성, 협업의 생산성 등을 높일 수 있다. 객체의 책임을 분리 하거나, SOLID 원칙 준수, 로직의 명확성 등의 유지 보수성이 향상될 수 있다.일급 객체란 무엇인가?일급 객체의 3가지 조건First-Class Citizen 은, 다음 3가지 특성을 가지는 객체를 말한다 :변수나 데이터 구조에 할당할 수 있어야 한다.함수의 매개변수로 전달할 수 있어야 한다함수의 반환값으로 사용할 수 있어야 한다.JAVA의 일급 객체JAVA에선 함수가 독립적인 일급 객체로 존재하지 않았었다. 이들은 메서드를 변수에 할당하거나 인자로 전달할 ..
Dependency Injection(DI) 이란?“Dependency injection is a programming technique that makes a class independent of its dependencies.” DI 란 객체간의 의존성을 외부에서 주입해주는 설계 패턴이다. 이를 통해 객체는 의존하는 객체들을 직접 생성하는 것이 아닌 외부에서 제공된 객체를 사용하게된다. 이를 통해 개발자는 SOLID 원칙의 의존성 역전 원칙 과 단일 책임 원칙을 달성할 수 있다.잠깐 의존성 역전 원칙과 단일 책임 원칙을 짚어보고 넘어가겠다. 의존성 역전 원칙 (Dependency Inversion Principle)DIP 란 무엇일까?DIP 란 상위 모듈이 하위 모듈에 의존하지 않아야 하며, 둘 ..