전체 글 211

[Java/ChatGPT] Day 20: 날짜(LocalDate) 활용 & 조건 기반 검색 기능

[ 학습 목표 ]java.time.LocalDate 를 사용해 현재 날짜와 출판 연도 등을 관리한다.도서 정보에 출판 연도를 String -> LocalDate 로 바꿔 정확한 날짜 비교 및 정렬을 해본다.검색 기능을 개선해서 연도 기준, 키워드 기준 검색이 가능하도록 한다.[ 이론 ]1. LocalDate란?java.time 패키지에서 제공날짜(연도, 월, 일)를 다룰 수 있는 객체import java.time.LocalDate;LocalDate today = LocalDate.now(); // 현재 날짜LocalDate published = LocalDate.of(2020, 03, 14); // 2020년 3월 14일[ 실습 ]1. 개선할 Book 클래스day19에서 개선하면 됨year: String..

[Library Management System] 25.07.19~20 작업 3~4일차 | 예외처리, 성공 메시지, 브랜치 전체 병합 및 정리

1. 예외처리 및 성공 메시지1) 성공 메시지도 messages.properties에서 관리하면 좋을 거 같아서 messages.properties 파일 수정. 2) 성공 메시지는 ApiResponse.java에서 관리.2. 브랜치 전체 병합 및 정리1) 메시지, 예외 등 공통으로 사용되는 기능에 대해서 나누어서 관리를 하다보니 복잡해짐. 혼자 작업을 하기 때문에 dev 브랜치에 전체 병합하여 충돌나는 부분을 정리하고 main에 다시 dev 브랜치를 병합.# 메모1) 브랜치를 나누어서 관리를 하려고 하다보니 관리하기 힘들고 충돌나는 부분이 많았졌다. 혼자 개발을 하기 때문에 main과 dev만 남겨두고 작업을 하되 dev를 기점으로하여 로그인 기능을 구현할 때에는 feat/login 이런 식으로 브랜치를..

[Library Management System] 25.07.18 작업 2일차 | DB 연결, 회원가입, 기본 예외 처리 및 메시지 정의

1. DB MySQL 연결 & 환경 변수 처리더보기1) main/resources/application.properties 설정 2) main/resources/application-dev.properties 설정 3) main/resources/application-prod.properties 설정 4) .vscode/launch.json 설정(1) .vscode 파일 안에 lauch.json 파일을 생성(2) 아래 이미지처럼 환경변수 설정해주기 (3) 실행은 Run and Debug 아이콘 클릭해서 들어간 다음 위에 있는 실행 버튼을 클릭해서 실행해야한다. 5) build.gradle 파일 설정mysql을 사용하기 때문에 mysql 의존성 추가2. 회원가입 구현더보기User(entity), Jo..

[SpringBoot] SecurityFilterChain에서 .authorizeRequests() 설정

작은 프로젝트를 개발하다가 인증 부분을 작성하는 중SecurityFilterChain에서 .authorizeRequests() 설정에 대하여 메모하면 좋을 거 같아서 작성함. permitAll() : 인증 없이 모두 접근 허용authenticated() : 로그인(인증)한 사용자만 접근 허용hasRole("ROLE_USER") : 특정 권한(역할)이 있는 사용자만 접근 허용1. anyRequest()에 .authenticated() 설정SecurityFilterChain 작성할 때,.authorizeRequests() 에서 .anyRequest()를 .authenticated()로 설정하면Spring Security에 의해 로그인 창이 뜬다.@Bean public SecurityFilterChain f..

[Library Management System] 25.07.17 작업 1일차 | 기능 정의, ERD 정의, 프로젝트, git, docker container 생성 및 준비

1. 기능 정리더보기1. 공통 (auth) - 회원가입 / 로그인 / 로그아웃 (User) - 관리자 로그인 (Admin) 2. 일반 사용자 (User) - 도서 검색 / 도서 목록 조회 - 도서 대출 / 도서 반납 - 마이페이지: 내 정보 수정 / 탈퇴 3. 관리자 (Admin) - 도서 관리: 등록 / 수정 / 삭제 / 목록 / 검색 - 회원 관리: 목록 / 검색 / 권한 설정 / 수정 / 삭제 > 1) 사용자 측 (user) - 도서 대출 이력 조회: 자신이 언제 어떤 책을 빌렸고 언제 반납했는지 확인 가능 - 대출 연장 기능: 정해진 기간 내에 1회 연장 가능 (예: 7일 연장) - 대출 기간 제한: 예: 최대 2주까지 대출 가능, 초과 시 연체 처리 - 연체 도서 알림: 연체된 도서가 있으면 대..

[Java/ChatGPT] Day 19: 예외 처리와 파일 연동 실전 연습

[ 학습 목표 ]파일 읽기/쓰기에서 발생할 수 있는 예외를 구체적으로 처리한다.도서 관리 기능을 작은 프로그램처럼 구조화해서 개발한다.지금까지 배운, 클래스, 예외, 파일 I/O, 리스트 활용 능력을 종합한다.[ 이론 ]1. 자주 발생하는 예외 상황1) 파일이 존재하지 않을 경우BufferedReader br = new BufferedReader(new FileReader("없는파일.txt"));// → FileNotFoundException 발생2) 파일에 쓸 수 없거나 경로가 잘못됐을 경우BufferedWriter bw = new BufferedWriter(new FileWriter("/root/test.txt"));// → AccessDeniedException or IOException3) 해결 ..

[Java/ChatGPT] Day 18: 파일 입출력 (File I/O)

[ 학습 목표 ]텍스트 파일을 읽고 쓰는 방법을 이해한다.File, FileWriter, BufferedReader 등의 클래스를 활용한다.도서 정보 또는 사용자 정보를 파일에 젖아하고 불러올 수 있다.[ 이론 ]1. 파일 입출력 기본 개념1) 파일 쓰기 (FileWriter)FileWriter를 사용해 해당 파일이 작성한 경로에 없으면 파일이 생성되고 안에 내용이 입력된다.파일이 있으면 해당 파일에 입력이 된다.import java.io.FileWriter;import java.io.IOException;public class WriterExample { public static void main(String[] args) { try { // 저장할 경로와 파일명 ..

[Java/ChatGPT] Day 17: 람다식 (Lambda) & 스트림 (Stream)

[ 학습목표 ]람다식의 기본 문법과 사용 이유를 이해한다.함수형 인터페이스를 알아본다.스트림(Stream)을 이용한 컬렉션 처리 방법을 학습한다.기존의 for문/if문을 더 간결한 코드로 대체할 수 있다.[ 이론 ]1. 람디식이란?메서드를 하나의 식(Expression)으로 표현한 것.불필요한 코드를 줄이고 나결하게 로직을 전달할 수 있다.2. 람다식 기본 문법(매개변수) -> { 실행문 }3. 람다식 예제// 기본 형태Runnable r = () -> System.out.println("Hello Lambda!");r.run(); // Hello Lambda! 출력// 매개변수 있는 경우Consumer c = (s) -> System.out.println("입력값: " + s);c.accept("테스트..