🦁멋쟁이사자처럼 백엔드 부트캠프 13기 🦁TIL 회고 - [58]일차🚀58일차에는 Spring Security와 데이터베이스를 연결하여 유저세부정보를 직접 설계하지 않고 DB로 연결해보는 실습을 하였다.학습 목표 : DB 명세를 통해 관계 테이블을 설계할 수 있어야함학습 과정 : 회고를 통해 작성UserDetailsService + Database기존에 UserDetailService를 직접 구현하여 유저에 대한 세부정보들을 직접 넣어주었다면DB의 User 테이블의 Role에 관련된 내용을 넣어줄 수 있도록 구현해야할 것@Beanpublic UserDetailsService userDetailsService(PasswordEncoder passwordEncoder){ UserDetails us..
🦁멋쟁이사자처럼 백엔드 부트캠프 13기 🦁TIL 회고 - [57]일차🚀57일차에는 Spring Security에서 사용자 별 권한을 부여하는 것과 쿠키에 대한 정보를 로그아웃을 통해서 실습해보았다.학습 목표 : Spring Security 사용자 권한 부여 및 그에 따른 인가된 URL 페이지 실습 가능학습 과정 : 회고를 통해 작성Spring Security 로그인 ▶️실습 - 로그인 페이지 리다이렉트 (loginPage())// 2. 인증없이 접근 가능한 URL 지정 및 (.requestMatchers())// 로그인 페이지와 로그인 성공 시 이동할 페이지 설정 (.formLogin())http .authorizeHttpRequests( auth -> auth .requestMa..
🦁멋쟁이사자처럼 백엔드 부트캠프 13기 🦁TIL 회고 - [56]일차🚀56일차에는 Thread, ThreadLocal과 함께 Filter의 동작흐름에 대해 학습하고 Spring Security 설정에 대해서도 학습하였다.학습 목표 : Filter에 대한 전반적인 이해와 Spring Security를 사용하는 이유 공부학습 과정 : 회고를 통해 작성Filter Filter는 Bean으로 등록해주어야하므로 @Component로 등록필터의 설정은 복잡해질 경우 application.yml 설정 이외로@Configuration 클래스를 작성해주어도 설정 적용이 가능Builder빌더 사용의 목적 ➡️ 메소드 체이닝을 통해 객체 생성을 편리하게 도와줌➡️new 로 초기화해서 생성하는 것이 아닌 Builder를..
🦁멋쟁이사자처럼 백엔드 부트캠프 13기 🦁TIL 회고 - [55]일차🚀55일차에는 DTO를 Product 프로젝트에 적용해보고, Spring Boot Security에 대해 학습할 수 있었다.학습 목표 : Entity뿐만 아니라 DTO를 통해서 데이터를 담는 방법을 구현 가능학습 과정 : 회고를 통해 작성파일 업로드 - 파일 정보 추가 (INFO)// 파일 업로드@PostMapping("/upload")public ResponseEntity uploadFile( @RequestParam("file") MultipartFile file, @RequestPart(name = "info", required = false) UploadInfo uploadInfo ){ ..
🦁멋쟁이사자처럼 백엔드 부트캠프 13기 🦁TIL 회고 - [54]일차🚀54일차에는 REST API + CURL 명령어로 Todo 프로젝트를 실습해볼 수 있었다.학습 목표 : @RestController를 활용한 다양한 실습 진행으로 @RestController의 흐름 익히기학습 과정 : 회고를 통해 작성▶️실습 - Todo 프로젝트 TodoService 생성@Service@RequiredArgsConstructorpublic class TodoService { private final TodoRepository todoRepository; // 4개의 비즈니스 만들기 // 1. 전체 할 일 조회 @Transactional(readOnly = true) public List..
🦁멋쟁이사자처럼 백엔드 부트캠프 13기 🦁TIL 회고 - [53]일차🚀53일차에는 REST API개념을 복습하고 CURL 명령어에 대해 개념을 공부하였다.휴가로 인해 미처 배우지 못한 부분들의 중요 개념들을 짚고 넘어가고자한다.학습 목표 : CURL 명령어에 대한 이해와 POST 방식 실습학습 과정 : 회고를 통해 작성Rest APIRest(Representational State Transfer) API 에서는 HTTP 메소드를 통해서 자원에 대한 행위를 하는지 결정한다. 주요 HTTP 메소드와 역할- GET : 자원을 조회 (READ)- POST : 새로운 자원을 생성 (CREATE)- PUT : 기존 자원을 전체 수정 (UPDATE)- PATCH : 기존 자원을 부분 수정 (UPDATE)- D..
🦁멋쟁이사자처럼 백엔드 부트캠프 13기 🦁TIL 회고 - [52]일차🚀52일차에는 RESTful API 에 대해 배워보고 @RestController어노테이션을 통해 웹에서 보여지는 것을 실습해볼 수 있었다. 또한 DB와의 연결을 통해 Service, Controller를 설계할 수 있었다.그 전 JOIN, EAGER, LAZY 등 Fetch 종류, 트랜잭션의 개념에 대해 공부하였다.학습 목표 : RESTful API를 통해 DB와 연결 및 아키텍처 설계하기학습 과정 : 회고를 통해 작성조인 JOINDB에서 두 개이상의 테이블을 연결하여 데이터를 조회하는 방법 내부조인 INNER JOIN가장 일반적인 형태로 두 테이블의 “교집합”만을 결과로 반환즉 두 테이블 간 일치하는 데이터의 해당 데이터만 표시..
상황⚠️"특정 사용자 조회" 와 "특정 사용자 삭제" 명령어 처리 시 오류 발생원인 가능성- 각 메소드에 orElseThrow() 와 같은 예외 처리를 하지 않은 것- 삭제 메소드에 존재하지 않는 사용자인 경우 처리할 조건을 지정해주지 않은 것해결방법1. [특정 사용자 조회] 메소드 수정기존 코드 (UserService)// 특정 사용자 조회 (SELECT - READ)public User getUserById(Long id){ return userRepository.findById(id).get();}// JPA가 자동으로 만들어주는 findById()를 이용해서 조회해볼 수도 있음public User findById(Long id){ return userRepository.findById(..
상황hr데이터베이스에 설계된 엔티티들을 생성하면서 많은 엔티티와 관계를 갖고 있는 Employee엔티티를 만들게되었는데 이 Employee 엔티티를 CommandLineRunner에서 findBySalaryBetween() 메소드를 테스트할때 문제가 발생하였다.forEach()를 통해 log.info()로 employee.toString()을 출력하였지만 제대로 출력되지 않았다.원치않는 결과원인 가능성@ToString 어노테이션이 추가되었음에도 "순화참조문제 = 무한루프문제" 가능성으로제대로 출력되지 않을 수 있음@Entity@Getter@Setter@NoArgsConstructor@ToString@Table(name = "employees")public class Employee { ... }@ToSt..