전체 글

모르는 내용 및 아는 내용 모두 꼼꼼히 복습하여 익숙해지는 그 날까지 꾸준히 공부하겠습니다.
Spring Framework/Spring boot

Springboot JWT 인증과 권한 처리하기 - 커스텀 어노테이션과 HandlerInterceptor 활용

Spring의 HandlerInterceptor 구현을 통해 사용자 요청을 가로채어 처리할 수 있는 인터셉터입니다. 이 인터셉터는 특정 핸들러 메서드에 커스텀 어노테이션이 붙어 있을 경우, 해당 요청이 유효한지 검증합니다.  저는 HandlerInterceptor를 통해 인증된 사용자의 권한과 특정 조건을 검사하기 위해 사용했습니다.로그인한 사용자가 게시글의 작성자인지 확인이 필요한 경우 서비스를 사용하다 보면 로그인 없이 접근 가능한 페이지(홈 페이지 등)가 있고, 로그인을 하거나 추가 권한이 있는 경우에만 접근이 가능한 페이지(게시글 수정, 삭제, 마이페이지)가 존재합니다.  1. 커스텀 어노테이션 만들기/** * @CheckCombinationOwner : 현재 사용자가 게시글을 작성한 사용자인지..

Spring Framework/Spring boot

[Spring boot] Spring 커스텀 어노테이션으로 로그인된 사용자 정보 불러오기 - HandlerMethodArgumentResolver, Webconfig

스프링부트를 통해 프로젝트를 진행하면 "Custom Annotation"을 통해 간편하게 로그인한 사용자의 정보를 불러올 수 있습니다. Controller의 메서드는 사용자의 HTTP, HTTPS 요청을 Serivce에 전달하는 등 핵심 기능만 담당하고, 현재 로그인이 되어있는 사용자의 정보는 어노테이션을 통해 처리합니다. 로그인된 사용자의 정보 불러오기 HandlerMethodArgumentResolver 인터페이스를 구현한 클래스를 추가하여 컨트롤러에서 파라미터에 값을 바인딩 해줄 수 있습니다. @PathVariable의 원리도 HandlerMethodArgumentHandler에 의해서 처리되는 것입니다. 1. 커스텀 어노테이션 정의하기 import java.lang.annotation.*; @Ta..

Spring Framework/Spring

[SPRING] Spring 객체지향 설계 solid 원칙 이해하기 - Spring Container, IoC, DI

SPRING 프레임워크를 통해 객체지향 설계의 원칙 중 SOLID 원칙이 무엇이며, 어떻게 적용되는지 알아보겠습니다. 1. SRP (Single Responsibility Principle) - 단일 책임 원칙 각 클래스는 하나의 단일한 책임만 가져야 한다. Spring에서는 Controller, Service, Repository 등으로 역할을 명확히 나누어 각각의 클래스가 특정 기능 또는 관심사에만 집중하도록 합니다. SRP를 잘 준수했는지 알 수 있는 기준은 변경입니다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따랐다고 할 수 있습니다. // UserController 클래스는 사용자 관리와 관련된 HTTP 요청을 처리하는 책임만을 가져야 합니다. @Controller public ..

Git

[Git] Git branch, switch, merge, rebase 사용하기

Branch 소프트웨어를 개발할 때, 개발자들간에 동일한 소스 코드를 함께 공유하고 서로 다른 작업을 할 때 사용합니다. 1. 브랜치 생성 git branch step1 'step1' 이라는 브랜치가 생성되었지만 ,현재 위치는 아직 main이므로 생성한 브랜치로 이동해야 합니다. 2. 브랜치 이동 git switch step1 main 브랜치에서 step1 브랜치로 이동합니다. 3. 브랜치에서 커밋하기 git commit 4. 브랜치 작업 내역 합치기 (Merge) git switch step1 git merge bugFix git switch bugFix git merge step1 bugFix 브랜치의 위치도 옮겨줍니다. 4.2 브랜치 작업 내역 합치기 (Rebase) git switc..

Spring Framework/Open API

[Chat GPT] Spring boot를 통해 GPT API Fine tuning, prompt 수행하

Prompt 란 프롬프트란 생성 인공지능 분야에서 거대 언어 모델로부터 응답을 생성하기 위한 입력값입니다. Propmt Engineering 이란 거대 언어 모델로부터 높은 품질의 응답을 얻어낼 수 있는 이러한 **프롬프트 입력 값들의 조합을 찾는 작업을 의미합니다. ✅ 프롬프트는 instruction으로 시작하고, context와 instruction을 구분하자. [instruction] 내가 요구하고자 하는 사항이 무엇인지 프롬프트의 제일 첫 부분에 명시하기. ###을 사용해 context를 분리해 보다 AI가 더 잘 인지할 수 있도록 한다. instruction : 모델이 수행하기를 원하는 특정 태스크 또는 지시 사항 context : 모델이 보다 더 나은 답변을 하도록 유도하는 외부 정보 또는 추..

Spring Framework/Spring boot

[Redis] Spring Boot에서 Redis 활용하기: Redis 사용 방법, 연동, 설치

Redis란 ✔️ 메모리 기반의 데이터 저장소로, 높은 성능을 제공하는 NoSQL 데이터베이스입니다. Key, Value 구조의 비정형 데이터를 저장하고 관리할 수 있습니다. 규모가 작은, 사용자가 많지 않은 서비스의 경우에는 WEB - WAS - DB의 구조로 모든 정보를 데이터베이스에 저장합니다. 하지만 사용자가 늘어나 조회의 빈도가 늘어난다면, 데이터베이스가 과부하될 수 있고, 또한 성능 저하가 일어날 수 있습니다. 그래서 이를 개선하고자, 캐시 서버를 도입하여 데이터베이스 서버의 과부하를 줄여주는데 이때 사용할 수 있는 캐시 서버 중 하나가 Redis입니다. 캐시란 ✔️ 캐시는 한번 읽어온 데이터를 임의의 공간에 저장하여 다음에 읽을 때는 빠르게 결괏값을 받을 수 있도록 도와주는 공간입니다. 같은..

JAVA

[JAVA] Java Optional.ofNullable() : Null 안전성과 간결한 코드 작성 방법

Optional 클래스란 ✔️ Java에서 Optional 클래스는 값이 있을 수도 있고 없을 수도 있는 상황을 다루기 위해 사용하는 컨테이너 클래스입니다. 이를 통해 값이 없음을 명시적으로 나타낼 수 있습니다. Optional을 사용하는 가장 큰 이유는 NullPoitnerException을 방지할 수 있습니다. Optional.ofNullable 메서드란 ✔️ ofNullable 메서드는 주어진 값이 null 인지 아닌지를 확인합니다. 값이 null이 아니면 해당 값을 가지는 Optional 객체를 반환하며, 갑이 null이면 빈 Optional 객체를 반환합니다. public class NullableExample { public static void main(String[] args) { Stri..

JAVA

[JAVA] Java Stream 활용법: Filter, Map, FlatMap 예제와 함께

Stream이란 ✔️Java에서의 Stream은 데이터 컬렉션을 다루는 데 사용되는 사용 합니다. 컬렉션을 for, for-each 형태보다 더 가독성 좋게 함수형 스타일로 다룰 수 있게 도와주며, 데이터를 원하는 형식으로 변환하거나 조작하는데 효율적입니다. Filter 연산자 ✔️'filter()' 연산자는 이름 그대로 컬렉션을 돌면서 주어진 조건에 따라 스트림 요소를 필터링해주는 역할입니다. List words = Arrays.asList("apple", "banana", "cherry", "date"); List filteredWords = words.stream() .filter(word -> word.startsWith("b")) .collect(Collectors.toList()); // 결과..

kylo
오늘도 열심히 - BE