분류 전체보기

항해 플러스 6기 프레임워크 사전 스터디에서 개별적으로 진행하는 API를 개발하고 있다.실행 환경SpringBoot 3.3.xJava 21 Member가 로그인(SignIn)할 때 Spring Security를 사용해서 인증을 해보기로 했다.우선 Spring Security가 간단하게 무엇인지 알아보고, 아키텍처로 동작 과정을 살펴본 후로그인 인증 구조도 아키텍처로 동작 과정 살펴보자.그다음에는 구현을 해보고, 시행착오 및 해결에 대해 써보자.우선 Spring Security로 로그인을 어떤 패키지에 구현할지를 고민했다.Member가 로그인하니까 member 패키지에 넣을까? 아니면 Spring Security를 사용하니까 인증 관점에서 auth 패키지에 넣을까?전자로 해보고, 후자로 바꿔보고 고민하다가..
항해 플러스 6기 프레임워크 사전 스터디에서 개별적으로 진행하는 API를 개발하고 있다.실행 환경SpringBoot 3.3.xJava 21 Member가 로그인(SignIn)할 때 Spring Security를 사용해서 인증을 해보기로 했다.우선 Spring Security가 간단하게 무엇인지 알아보고, 아키텍처로 동작 과정을 살펴본 후로그인 인증 구조도 아키텍처로 동작 과정 살펴보자.그 다음에는 구현을 해보고, 시행착오 및 해결에 대해 써보자. Spring Security Login Authentication Architecture이전 글의 마지막 그림인 Spring Security Full Architecture flow에 연결 지어서 보자.위 그림처럼 Authentication은 Filter에 의해..
항해 플러스 6기 프레임워크 사전 스터디에서 개별적으로 진행하는 API를 개발하고 있다.실행 환경SpringBoot 3.3.xJava 21 Member가 로그인(SignIn)할 때 Spring Security를 사용해서 인증을 해보기로 했다.우선 Spring Security가 간단하게 무엇인지 알아보고, 아키텍처로 동작 과정을 살펴본 후로그인 인증 구조도 아키텍처로 동작 과정 살펴보자. 그 다음에는 구현을 해보고, 시행착오 및 해결에 대해 써보자. Spring SecurityWikipedia를 보면 Spring Security는 Java 애플리케이션에 인증, 권한 부여 및 기타 보안 기능을 제공하는 프레임워크다.여기서 인증, 인가(권한 부여)에 대해 살펴보고 가자.인증(Authentication), 인가..
항해 플러스 6기 프레임워크 사전 스터디에서 개별적으로 진행하는 API를 개발하고 있다.실행 환경SpringBoot 3.3.xJava 21 ProductController에서 `@RequestMapping("/api")` 처럼 사용 중이었는데지난주에 다른 팀원들의 코드를 보고 공통으로 컨트롤러를 추상화해서 상속받아 사용하면 좋을 것 같았다. 그럼 공통 API를 상속받으면 왜 좋을까?일단 "/api"처럼 공통된 api는 더 이상 중복해서 작성하지 않아도 된다. 확장성을 고려해서 생각해 보자. 지금은 V1이지만 나중에 V2가 추가된다면?지금은 "/api/v1"을 사용 중인데, 추가되는 API에는 "/api/v2"처럼 엔드포인트를 다르게 한 컨트롤러를 상속하면 된다.아래와 같이 엔드포인트의 접두사를 설정할 수..
문제 발생redis에 MemberRequestDto Object를 set 하는 과정에서 아래와 같은 오류가 발생했다.Java 8 date/time type 'java.time.LocalDate' not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling 원인 분석에러 로그를 보면 Java 8에서는 'java.time.LocalDateTime 형식의 date/type 형식을 지원하지 않으니 "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" 모듈을 추가하여 처리하라고 한다. 그런데 라이브러리를 확인해보니 이미 모듈을..
https://www.acmicpc.net/problem/14719 Answerimport java.io.InputStreamReader;import java.io.BufferedReader;import java.io.IOException;import java.util.StringTokenizer;public class Main { public static void main(String[] args) { try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { StringTokenizer st; st = new StringTokenizer(br.readLine(..
계기Repository를 만들 때 사용하지 않는 메서드들이 많은 JpaRepository대신 Repository를 상속받아서 쓰려고 했다./*public interface MemberRepository extends JpaRepository {}*/public interface MemberRepository extends Repository {} 이렇게 MemberRepository 인터페이스를 만들고 나서OCP를 지키기 위해 Config 클래스 코드를 짜다 보니 문제가 생겼다. Config 클래스에서 인터페이스를 사용하고자 @RequiredArgsConstructor와 MemberRepository 필드로 의존성을 주입해서 하자니 MemberRepository가 아닌 다른 MemberJpaReposit..
회원가입할 간단한 화면을 개발하고 있는데 html, css, js 파일을 고칠 때마다 서버를 재기동해 주는 것이 불편했다.Eclipse로 개발했을 때는 서버 재기동 없이 프런트단에 잘 반영되었어서 더 불편함을 느꼈다. 따라서 정적 자원들을 변경할 때마다 반영해 주는 방법을 알아보자.MacBook, IntelliJ, Spring Boot, Gradle을 사용하는 중이다. 1. Dependency 추가gradle에 아래 코드가 있는지 확인하고, 없으면 추가한다.developmentOnly 'org.springframework.boot:spring-boot-devtools' devtools는 Spring Boot에서 제공하는 개발 편의를 위한 모듈로 브라우저로 전송되는 내용들에 대한 코드가 변경되면 자동으로 ..
문제 발생SpringBoot로 개발을 하고 실행시켜 보니 아래와 같은 오류가 나타났다.Parameter 0 of constructor in XXX.member.controller.MemberController required a single bean, but 2 were found:- memberServiceImpl: defined in file [/XXX/out/production/classes/com/travelplan/member/service/MemberServiceImpl.class]- memberService: defined by method 'memberService' in class path resource [XXX/member/config/MemberConfig.class]This may..
https://www.acmicpc.net/problem/2504 이 문제는 스택으로 푸는데 java.util에서 제공하는 Stack을 사용할 것이다.참고로 java.util에서 제공하는 Stack은 thread-safe하다.이유는 Stack의 내부 구조를 보면 모든 메서드에 `synchronized`가 붙어 있기 때문이다. Answerimport java.io.InputStreamReader;import java.io.BufferedReader;import java.io.IOException;import java.util.Stack;public class Main { public static void main(String[] args) { String brackets = ""; ..
Yn3(인삼)
'분류 전체보기' 카테고리의 글 목록