반응형

IT Tech/Java 10

JwtAuthenticationFilter를 이용한 Spring Security JWT 인증 필터 설정 방법

Spring Boot와 Spring Security를 사용하여 JWT 토큰을 서버에서 인증하는 방법에 대해서 알아보도록 하겠습니다.1. JwtAuthenticationFilter 이해하기JwtAuthenticationFilter는 JWT 토큰을 검증하여 사용자를 인증하는 역할을 하는 필터입니다. 이 필터는 모든 요청을 가로채어, 요청 헤더에 JWT가 포함되었는지 확인하고 토큰이 유효한 경우 사용자를 인증합니다.2. JwtAuthenticationFilter 클래스 구성JwtAuthenticationFilter는 다음과 같은 주요 작업을 수행합니다:HTTP 요청에서 JWT 추출JWT 유효성 검증사용자 정보 로드 및 인증 처리3. SecurityConfig 설정Spring Security 설정에서 JwtAu..

IT Tech/Java 2025.04.29

MapStruct를 이용한 DTO 매핑 자동화(feat.관심사의 분리)

개발을 하다 보면 '관심사의 분리(Separation of Concerns)'라는 말을 자주 접하게 됩니다. 한 클래스나 컴포넌트는 가능한 하나의 책임만을 담당하도록 설계하는 것이 중요하다는 개념인데요. 프론트엔드 개발에서도 하나의 컴포넌트가 단 하나의 기능만 담당하도록 권장되고, 백엔드 역시 마찬가지 입니다.백엔드, 특히 JPA를 사용할 때 Entity는 도메인의 핵심 로직과 데이터 영속성 관리라는 역할에만 집중하는 것이 좋습니다. 때문에 실제 데이터를 주고받기 위해서는 Entity가 아닌 별도의 DTO(Data Transfer Object)를 만들어 사용하는 경우가 많습니다.DTO로 변환하는 귀찮음저 역시 처음에는 별도의 Mapper 클래스를 만들어서 Entity를 DTO로 변환하는 정적 메서드를 작..

IT Tech/Java 2025.04.29

securityFilterChain 설정

스프링 부트 Security 설정법스프링 부트의 Security 설정에 대해서 알아보자.나도 정확하겐 모른다. 그냥 내가 하고 있는 설정에 대해서 알아보자!{: .prompt-tip }먼저 security config의 security filter chain 코드입니다. 개발을 처음 시작했을때 고생한 결과로 얻은 이 필터체인 코드로 인해서 지금은프로젝트의 시작을 꽤 빠르게 할 수 있지만, 처음 security config를 작성했을 당시에는 스프링 부트의 버전이 무엇인지, Spring Security 의 버전이무엇인지 잘 몰라 그냥 최신 버전으로 생성을 했지만, 당시에 스프링 부트 3버전 이후, 그리고 그에따른 스프링 시큐리티 6에 대한 설정 코드를공유가 잘 되지 않고, 옛날 버전으로 세팅하면서 이해도 ..

IT Tech/Java 2025.04.29

React - Java Spring Boot 프로젝트에서 카카오 로그인 api 기능 구현하기

요즘 웹 어플리케이션이든 모바일 어플리케이션이든 로그인, 회원가입 기능을 구현할 때 카카오, 구글, 페이스북 등으로 로그인을 하는 기능을 구현하는 것은 기본이 됐습니다. 그 중 카카오 로그인을 리액트와 자바 스프링부트 프로젝트에서 구현하는 방법이다. 가장 먼저 할 일은 카카오 디벨로퍼에서 앱을 생성하는 것이다.  https://developers.kakao.com/ Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com카카오 디벨로퍼에 로그인을 한 후, 상단의 네비게이션 바에서 내 어플리케이션을 누른 후,  애플리케이션 추가하기 버튼을 클릭하고 내 앱을 생..

IT Tech/Java 2024.07.29

SpringBoot 프로젝트에 SPA 프로젝트 연결하기

SPA 프로젝트의 빌드 결과물을 Spring Boot의 static 폴더로 이동해왔다면, 이제 스프링부트 프로젝트에서 프론트 엔드 요청을 SPA 프로젝트의 html파일로 연결해줘야한다. 여기서는 React프로젝트를 이용해서 SPA를 만들었기 때문에 React의 빌드 결과물을 가지고 연결할 것이다. 이렇게 보면 resources 하위에 React의 빌드 결과 파일들이 자리잡고 있는 것을 볼 수 있다. 이제 Spring Boot의 컨트롤러와 Web Config 파일에서 해당 index.html 파일로 연결되게 설정만 해주면 된다. 가장 먼저 해야할 일은 Controller를 생성하는 것이다.  @Controllerpublic class SPAController { @RequestMapping({"/"}..

IT Tech/Java 2024.07.29

Spring Data JPA - Specification이란?

JPA를 이용해서 개발을 하다보면, 복잡한 검색조건, 단순히 검색조건이 한 두개만 늘어나도 상당히 코드의 가독성이 확 떨어지는 경우가 생깁니다. 그런 상황에서 동적쿼리라는 말이 들리고, Specification이라는 인터페이스도 들리게 됩니다. Specification이란 무엇인지 한 번 알아보도록 하겠습니다. Specification이란, Spring Data JPA에서 제공하는 API중에 하나입니다. 복잡한 검색 조건, 다양한 조합의 필터링 로직을 쉽게 구현할 수 있는 API입니다. 특히 검색이나 필터링 조건이 많은 REST API를 개발할 때 매우 유용한 API입니다. 왜 써야 하는가? 테이블에서 필드에서 조건이 맞는 데이터를 가져온다고 생각해봅시다. 그럼 JPA로 간단하게 인터페이스의 method..

IT Tech/Java 2024.03.25

자바 - 최대공약수를 가장 빠르게 찾는 방법: 유클리드 호제법 알고리즘

백준 문제에서 최대공약수를 찾는 문제가 나왔어요. 당연히 무식한 저는 그냥 두 수의 모든 배수를 찾아서 그 중에서 가장 큰 수를 검색하는 방식으로 했는데 시간초과에 걸리는 것이 아니겠어요? 그래서 그럼 어떤 방법으로 최대공약수를 찾을 수 있을까 찾아봤더니 유클리드 호제법이라는 아주 유명한 수학공식이 있더군요. 1. 무식한 방법 public static int maximumCommonMultiple(Integer a, Integer b) { Map aCommonMultiple = new HashMap(); List bCommonMultiple = new ArrayList(); int resultCommonMultiple = 0; for (int i = 1; i

IT Tech/Java 2024.01.24

JPA의 영속성 전파 cascade 옵션에 대해서 알아보기

JPA를 가지고 데이터베이스를 설계할 때, 아무 생각없이 cascade 속성을 사용해왔습니다. cascade란 무엇일까요? 이 옵션을 통해서 어떤 일들이 일어나는 걸까요? 한 번 알아보도록 해봅시다. cascade? JPA에서 'cascade' 속성은 엔티티 간의 관계에서 한 엔티티에 대한 영속성 관리 작업을 관련 엔티티에도 적용할지 여부를 정의하는 속성입니다. 즉, 한 엔티티의 생명주기 이벤트(예: 저장, 업데이트, 삭제)가 연관된 엔티티에도 전파되도록 할지를 결정하는 설정입니다. 말이 되게 어려운데요. 간단하게 삭제로 알아보면, 부모 엔티티를 삭제하면, 해당 부모 엔티티와 연관되어 있는 엔티티들도 삭제가 됩니다. @Entity @Table public class CouponBookmark { @Id ..

IT Tech/Java 2024.01.17

자바(JAVA)의 Map에서 키와 값으로 요소 찾기 - containsKey와 containsValue 활용하기

자바에서 Map을 통해서 데이터를 넣고 가져와서 활용할 수 있습니다. Array나 List 같은 자료 구조들도 있지만 이들과의 차이점은 Map은 Key와 Value 쌍으로 자료를 구분하고, 저장한다는 것이고, Array와 List는 index를 통해서 자료를 구분, 저장한다는 점입니다. 백준 10815번 문제처럼 어떤 값이 존재하는 것인지 존재하지 않는 것인지 찾기 위한 도구로는 Map이 Array나 List보다 더 적당한 도구라고 볼 수 있습니다. 왜냐하면 Array나 List도 값이 존재하는지 찾을 수는 있지만, 결국에는 Index에 의해 구분되기 때문에 순차적으로 검색할 수 밖에 없습니다. 결국 어떤 요소의 존재 여부를 찾을 때 해당 자료가 많을 경우, Map으로 자료구조를 선택한다면 조금 더 빠른..

IT Tech/Java 2024.01.09

QuickSort에 대해서 알아봅시다~ Java Array, List 정렬 구현하기

정렬을 하는 알고리즘의 방식은 정말 많이 있습니다. 그리고 정렬만큼 복잡한 것도 없는 것 같습니다. 이제까지 사실 정렬이 나오면 그냥 sort 내장 함수를 적극적으로 활용하고, 그 원리에 대해서는 생각을 잘 하지 않았습니다. 그런데 결국 알아야 하긴 하니까.. 이해해야하긴 하니까.. 그리고 백준에서 정렬문제를 풀고 있어서 계속 정렬로 어떻게 하면 사람들을 괴롭힐지에 대한 문제만 나오니까.. 했지만 그래도 sort로 버티고 있었는데 결국 sort에 대해서 이해해야 하는 날이 오고 말았습니다. 1. 기본적인 sort 방법 가장 기본적인 sort의 방법은 Array의 모든 요소들을 비교해서 순서대로 정렬하는 방법입니다. 말 그대로 순차적으로 모든 요소를 하나하나 비교하게 되죠. 먼저 코드를 볼게요. impor..

IT Tech/Java 2024.01.02
728x90
반응형