전체 글 94

플러스 주차 개인 과제 TIL 5.

▶ LEVEL 2▷ 9. Spring Security● 문제의 요구사항1. 기존 Filter와 Argument Resolver를 사용하던 코드들을 Spring Security로 변경해라- 접근 권한 및 유저 권한 기능은 그대로- 권한은 Spring Security의 기능을 사용 2. 토큰 기반 인증 방식은 유지, JWT는 그대로 사용 우선 Spring Security에 관하여 알아보자● Spring Security란?애플리케이션의 인증과 권한을 처리하는 강력한 보안 프레임워크 ● Spring Security의 주요 개념1. 인증(Authentication)- 사용자가 누구인지 확인하는 과정- 아이디/비밀번호 기반 로그인 또는 JWT, OAuth2 등을 사용- AuthenticationManager가 인증..

TIL 2025.03.14

플러스 주차 개인과제 TIL 4.

▶ LEVEL 2▷ 7. N+1● 문제의 요구사항1. CommentController 클래스의 getComments() API를 호출할 때 N+1문제가 나타나고 있다. 해당 문제가 발생하지 않도록 코드를 수정해라 문제의 요구사항을 보면 현재 N+1문제가 나타나고 있음을 알 수 있다.문제가 보여준 N+1 문제는commnets 테이블에서 데이터를 조회한 후, 각 comment마다 개별적으로 users 테이블에서 데이터를 조회하는 문제이다. 우선 문제가 나타나는 코드가 어디인지 살펴보도록 하자@GetMapping("/todos/{todoId}/comments")public ResponseEntity> getComments(@PathVariable long todoId) { return ResponseEn..

TIL 2025.03.13

플러스 주차 개인과제 TIL 2.

▶ LEVEL1▷ 2. 코드 추가 퀴즈 - JWT의 이해● 문제의 요구 사항1. User의 정보에 nickname을 추가2. JWT에서 유저의 닉네임을 꺼내 화면에 보여주기를 원한다. 해결할 방법을 글로 작성해 본다면1. User의 정보에 nickname을 추가이는 User  엔티티에 nickname컬럼을 추가하면되고 2. JWT에서 유저의 닉네임을 꺼내 화면에 보여주기를 원한다.이는 JwtUtil에서 토큰에 nickname값을 추가하도록 설정하면된다. 해당 문제를 수행하기 위해서 우선 User 엔티티를 봐야한다.@Getter@Entity@NoArgsConstructor@Table(name = "users")public class User extends Timestamped { @Id @Genera..

TIL 2025.03.11

플러스 주차 개인과제 TIL 1.

▶ LEVEL 1.▷ 1. 코드 개선 퀴즈 - @Transactional의 이해○ 문제의 코드@PostMapping("/todos")public ResponseEntity saveTodo( @Auth AuthUser authUser, @Valid @RequestBody TodoSaveRequest todoSaveRequest) { return ResponseEntity.ok(todoService.saveTodo(authUser, todoSaveRequest));}해당 API("/todos")를 호출할 때, 오류가 발생하게 된다. ○ 에러 로그jakarta.servlet.ServletException: Request processing failed: org.springfram..

TIL 2025.03.10

Spring 심화주차 개인 과제 TIL

▶ 개인 과제 진행 과정https://phonebee.tistory.com/77 내일배움캠프 TIL 23.▶CH6 Spring 심화 개인 과제※ 리펙토링이란?● 리펙토링은 결과의 변경 없이 코드의 구조를 재조정한다는 의미이다. ※ 리펙토링은 왜 하는가?● 코드의 가독성을 높인다.● 유지보수를 편하게phonebee.tistory.comhttps://phonebee.tistory.com/78 내일배움캠프 TIL 24.▶ CH6 Spring 심화 개인 과제▷ Level 1-2 리펙토링 퀴즈 - 불필요한 if-else 피하기public String getTodayWeather() { ResponseEntity responseEntity = restTemplate.getForEntity(buildWeatherAp..

TIL 2025.02.27

내일배움캠프 TIL 24.

▶ CH6 Spring 심화 개인 과제▷ Level 1-2 리펙토링 퀴즈 - 불필요한 if-else 피하기public String getTodayWeather() { ResponseEntity responseEntity = restTemplate.getForEntity(buildWeatherApiUri(), WeatherDto[].class); WeatherDto[] weatherArray = responseEntity.getBody(); if (!HttpStatus.OK.equals(responseEntity.getStatusCode())) { throw new ServerException("날씨 데이터를 가져오는데 실패했습니다. 상태 코드: " + re..

TIL 2025.02.24

내일배움캠프 TIL 23.

▶CH6 Spring 심화 개인 과제※ 리펙토링이란?● 리펙토링은 결과의 변경 없이 코드의 구조를 재조정한다는 의미이다. ※ 리펙토링은 왜 하는가?● 코드의 가독성을 높인다.● 유지보수를 편하게 한다. 그런 의미에서 레벨 1-1을 풀어보자 ▷ Level 1-1 코드 개선 퀴즈 - Early Return@Transactionalpublic SignupResponse signup(SignupRequest signupRequest) { String encodedPassword = passwordEncoder.encode(signupRequest.getPassword()); UserRole userRole = UserRole.of(signupRequest.getUserRole()); if (us..

TIL 2025.02.21

뉴스피드 프로젝트 트러블 슈팅 TIL

▶ 트러블 슈팅▷ Jwt를 활용한 댓글 작성 오류● 전개: Session 기능을 이용하여 userId를 받아와서 해당 유저 Id로 댓글을 작성하는 코드를 Jwt를 활용하여 useId를 가져오는 기능으로 제작하던 중이였다. ● 과정@PostMapping("/posts/{postId}/comments")public ResponseEntity save( @SessionAttribute(name = "LOGIN_USER") Long userId, @PathVariable Long postId, @RequestBody CommentSaveRequestDto dto){ return ResponseEntity.ok(commentService.save(userId, postI..

TIL 2025.02.20