전체 글 211

[Library Management System] 25.08.01 (16일) | (구현) 사용자 인증 정보

[ 작업한 내용 ]1. auth, user 디렉토리 분류 및 구분- 로그인, 로그아웃, 회원가입을 auth에서 관리하고 user에서는 사용자 정보를 불러오도록 디렉토리 분류함.2. AuthController 클래스에서 /me api 제거- UserController에서 관리하기 위해서. 3. 사용자 정보 가져오는 기능 추가- UserController 기본 api uri 시작은 /api/v1/user로 지정.- UserController에 사용자 인증 정보를 가져오는 api 기능 추가.- 정보를 가져오는 것은 Authentication.getPrincipal()을 사용.- UserInfoResponseDTO를 생성하여 username, email, joindate, lastlogindate를 가짐.- U..

[Library Management System] 25.07.31 (15일) | (구현) 사용자 인증

[ 작업한 내용 ]1. 사용자 인증 api 개발- AuthController에서 @GetMapping("me") api 작업.- Authenication.getPrincipla() 메서드를 사용해 생성한 User 객체에 대입 후 인증 정보가 없으면 예외를 던지고, 인증 정보가 있으면 로그인한 사용자의 username을 return.- User 엔티티에서 UserDetails 인터페이스 구현을 하기 때문에 관련 구현해야하는 getter 전체 구현.- 예외 발생과 인증 성공했을 때의 메시지 출력을 위해 messageProvider 사용하여 ErrorCode, SuccessCode 출력.- ErrorCode와 SuccessCode에 각각 관련 http status, code, message 추가.2. ApiR..

[Library Management System] 25.07.21~25.07.30 (5~14일) | (구현) 사용자 로그인, 로그아웃

[ 작업 한 내용 ]1. api 응답 객체 및 예외 처리 통일화- ApiResponse 클래스에 success, error 메서드 생성 후 관리- ErrorResponse 삭제- SuccessCode, ErrorCode를 enum으로 관리- messages.properties에 메시지 키 정의.- BaseException, GlobalExceptionHandler 코드 수정2. 로그인 기능 구현 (+JWT)- AuthController, AuthService에 로그인 기능 구현- 토큰 생성을 위해 JwtTokenProvider 생성- JWT 토큰 검증 및 유효성 검사를 위해 JwtAuthenticationFilter 생성- JWT 속성 관리를 위해 JwtProperties 생성.- JWT 속성에 따른 변..

[Java/ChatGPT] Day 22: Stream API 고급 활용 & Optional

[ 학습 목표 ]List을 Stream으로 가공, 필터링, 정렬Optional로 NPE 방지 및 결과 처리 (NPE = NullPointerException)[ 이론 ]1. 사용 기술기술설명Streamfilter(), sorted(), map(), forEach() 등ComparatorComparator.comparing() 등으로 정렬Optional검색 결과가 없을 경우 예외 방지2. 예시 기능: 검색 + 정렬 고급화1) 정렬: 출판일 기준 최신순 정렬books.stream() .sorted(Comparator.comparing(Book::getPublishedDate).reversed()) .forEach(System.out::println);2) 필터 + 정렬: 특정 작가의 책만 출판일 기준으로..

[Java/ChatGPT] Day 21: 파일 기반 데이터 저장 및 로딩 (실제 시스템처럼)

[ 학습 목표 ]books.txt에 저장된 내용을 프로그램 시작 시 읽어와서 List으로 만들기프로그램 종료 시 List의 모든 내용을 다시 파일에 저장하기도서 등록, 검색, 삭제 등 모든 작업을 파일과 연동 [ 실습 ]1. 프로잭트 개념 요약시작 시: books.txt 읽어서 List로 변환도서 등록/삭제: 리스트에 추가/삭제만 함 (List)종료 시: List의 내용을 books.txt에 덮어쓰기2. 구조 미리 보기📂 src/├── domain/│ └── Book.java├── service/│ └── LibraryService.java├── io/│ └── FileHandler.java ✅ NEW├── Main.java└── books.txt3. 코드1) Book.javapack..