나를 기록하다
article thumbnail
[Spring Security] Spring Security와 JWT 적용 과정
Java/Spring 2024. 6. 18. 13:54

사이드 프로젝트를 진행하면서 Spring Security와 JWT를 적용하여 회원 기능을 완성하는 역할을 맡게 되었다.JWT는 프로젝트에 적용시켜본 경험이 있으나 Spring Security는 처음이었고 Spring Security와 JWT를 함께 적용시켜보는 것 또한 처음이었기에 JWT부터 Spring Security까지 적용시켜가는 과정을 차근차근 기록해보려 한다. 시작하겠다. JWT(Json Web Token)인증 방식토큰 인증 방식(JWT)동작 원리사용자가 로그인하면 서버는 JWT와 같은 토큰을 생성하여 클라이언트에 전달클라이언트는 이후의 모든 요청에 이 토큰을 HTTP 헤더에 포함시켜 서버로 전송서버는 토큰을 검증하여 사용자 정보를 확인하고 인증 여부 판단장점서버는 무상태(stateless) 방..

article thumbnail
[Java] List<? extends Parent> list에 add가 불가능한 이유
Java 2024. 1. 25. 00:20

Generics() & WildCard(?) 자바의 제네릭과 와일드 카드를 공부하다가 다음과 같은 내용을 발견했다. import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List과 같이 작성된다. 이는 어떤 요소 타입이든 일치하는 컬렉션으로 와일드카드 타입이라고 불린다. 와일드카드 타입은 아래 코드처럼 작성할 수 있다. void printCollection(Collection c) { for (Object e : c) { System.out.println(e); } } 이제 우리는 이 메소드를 어떤 종류의 컬렉션이든 상관없이 호출할 수 있다. 그리고 print..

article thumbnail
[모던 자바 인 액션] 람다 표현식
Java/모던 자바 인 액션 2023. 12. 15. 12:48

익명 클래스로 다양한 동작을 구현할 수 있지만 코드가 깔끔하지 않다. 깔끔하지 않은 코드는 이전 내용에서 배운 동적 파라미터를 실전에 적용하는 것을 막는 요소다. 이때 더 깔끔한 코드로 동작을 구현하고 전달하는 람다 표현식을 사용해보자. 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 람다 표현식에는 이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있다. 람다의 특징 익명 • 보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다. • 구현해야 할 코드에 대한 걱정거리가 줄어든다. 함수 • 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. • 하지만 메서드처럼 파라미터 리스트. 바디, 반환..

article thumbnail
[디자인 패턴] Builder 패턴
Java/디자인 패턴 2023. 12. 13. 14:24

Builder 패턴 일반적으로 구조를 갖춘 큰 구조물을 건축하거나 구축하는 것을 build라고 하고, 구조를 갖춘 커다란 건축물을 빌딩(building)이라고 한다. 빌딩을 지을 때는 먼저 지반을 다진 후, 뼈대를 만들고 아래에서 위로 조금씩 만들어 간다. 대체로 복잡한 구조를 가진 구조물을 만들 경우, 단숨에 완성하기는 어렵다. 우선 전체를 구성하는 각 부분을 만들고 단계를 밟아가며 만들게 된다. 이러한 구조를 가진 인스턴스를 만들어 가는 Builder 패턴에 대해 알아보자. 예제 프로그램 Builder 패턴을 사용해 '문서'를 작성하는 프로그램 문서는 다음과 같은 구조로 되어 있다. 타이틀을 한 개 포함한다 문자열을 몇 개 포함한다 항목을 몇 개 포함한다 Builder 클래스에서는 문서를 구성하는 메..

article thumbnail
[디자인 패턴] Prototype 패턴
Java/디자인 패턴 2023. 12. 12. 21:30

Prototype 패턴 Something 클래스의 인스턴스를 만들고자 할 때 우리는 다음과 같이 new라는 Java 언어의 키워드를 사용해서 클래스 이름을 지정하고 인스턴스를 생성한다. new Something() 이처럼 new를 사용해 인스턴스를 만들 때는 클래스 이름을 반드시 지정해야 한다. 그러나 클래스 이름을 지정하지 않고 인스턴스를 생성하고 싶을 때도 존재한다. 다음과 같은 경우에는 클래스로부터 인스턴스를 만드는 대신 인스턴스를 복사해서 새 인스턴스를 만든다. 종류가 너무 많아 클래스로 정리할 수 없는 경우 취급할 오브젝트 종류가 너무 많아서, 하나하나 다른 클래스로 만들면 소스 파일을 많이 작성해야 하는 경우 클래스로부터 인스턴스 생성이 어려운 경우 생성하고 싶은 인스턴스가 복잡한 과정을 거쳐..

article thumbnail
[디자인 패턴] Singleton 패턴
Java/디자인 패턴 2023. 12. 11. 12:52

Singleton 패턴 지정한 클래스의 인스턴스가 반드시 1개만 존재한다는 것을 보증하고 싶을 때 인스턴스가 하나만 존재한다는 것을 프로그램 상에서 표현하고 싶을 때 인스턴스가 하나만 존재하는 것을 보증하는 패턴을 Singleton 패턴이라고 부른다. 예제 프로그램 클래스 목록 이름 설명 Singleton 인스턴스가 하나만 존재하는 클래스 Main 동작 테스트용 클래스 클래스 다이어그램 Singleton 클래스 Singleton은 static 필드(클래스 변수)로 정의되고 Singleton 클래스의 인스턴스에서 초기화된다. 초기화는 SIngleton 클래스를 로드할 때 한 번만 실행된다. Singleton 클래스의 생성자는 private로 되어 있다. 이는 Singleton 클래스 외부에서 생성자 호출을..

profile on loading

Loading...