본문 바로가기
728x90

전체 글247

[231211] Spring 심화 개인 과제 피드백 이번 심화 개인 과제로 테스트 코드를 작성하는 과제가 나왔다. 테스트 과제를 진행하면서 궁금했던 점들을 깃허브 이슈에 남겨놓았고, 이를 토대로 튜터님께서 답변을 남겨주셨다. 1. 테스트 시 기존 코드에 없는 생성자가 필요한 경우 예를 들어 reqeustDto 같은 경우 테스트를 위해서 값을 넣어줘야 했는데, 기존의 코드에서는 Getter만 있었기 때문에 생성자를 추가해주었다. 테스트로 인해서 기존 코드의 변경이 있는 것은 좋지 않다는 생각이 들어서 이에 대해 질문을 남겼다. 답변: 이런 경우 생성자는 NoArgsConstructor의 AccessLevel을 PROTECTED로 정의하고 mockBuilder를 사용해서 명확하게 객체를 만들 때 mockBuilder를 사용하는 방법이 있습니다. // ex. .. 2023. 12. 11.
[231207] 심화 주차 조별 과제 필터 예외 처리 필터쪽에서 발생한 Exception에 대해서도 원하는 형식으로 반환할 수 있도록 구현하고자 했다. 필터에서 발생한 예외를 처리하는 방법으로 필터를 추가하는 방법이 있다고 듣게 되어서 이에 대해 찾아보고 구현해보았다. ExceptionHandleFilter jwt 관련 예외를 다룬다 public class ExceptionHandleFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { t.. 2023. 12. 7.
[231206] 프로그래머스 피로도 (Java) 깊이 우선 탐색(DFS, Depth-First Search) 트리나 그래프를 탐색하는 기법 중 하나 시작 노드에서 자식의 노드들을 순서대로 탐색하면서 깊이를 우선으로 탐색하는 알고리즘 완전탐색 알고리즘 주로 반복문을 활용하거나 재귀문을 통해 구현됨 DFS의 기본 탐색 과정 현재 노드를 방문한 것으로 표시 방문한 표시가 되어 있지 않은 인접한 정점을 탐색 더 이상 방문하지 않은 정점이 없으면 이전 정점으로 역추적(backtracking)한다. 모든 정점을 방문할 때까지 프로세스를 반복 DFS의 장단점 장점 목표가 특정 정점에 최대한 빨리 도달하는 것일 때 유용 단점 순환 그래프일 경우 무한 루프에 빠질 수 있음 피로도 문제가 완전탐색 문제인 것을 보고 DFS 알고리즘으로 해결하고 싶었다. DFS 알고리즘을.. 2023. 12. 6.
[231204] 심화 주체 개인과제: 테스트 Spring 심화 주체 개인 과제로 테스트 코드를 작성하는 과제가 나왔다. 지난번에 제출했던 todoapp 코드를 가지고 테스트 코드를 작성했다. 과제를 마무리하면서 이번에 작성해본 테스트 코드를 정리해보려고 한다. 깃허브: https://github.com/dlwls423/todoapp Entity, Dto 테스트 Card에 있는 setComplete 매서드를 테스트 class CardTest { Card card; @BeforeEach() void setUp() { card = new Card(); } @Test @DisplayName("setComplete 테스트") void test1() { card.setComplete(true); assertTrue(card.isComplete()); } } .. 2023. 12. 4.
[231201] JPA와 영속성 컨텍스트 지난 과제를 어느 정도 마무리하면서 추가로 궁금했던 내용들을 정리해보려고 한다. JPA에서는 엔티티 매니저에 의해 엔티티들을 영속화시켜 주는데, Spirng data JPA의 경우 내부적으로 처리해주다보니 오히려 영속화나 트랜잭션 과정에 대해 이해가 잘 되지 않았다. 그래서 영속성 컨텍스트에 대해 더 공부할 필요성을 느꼈다. Spring Security 필터에서 받아온 User 엔티티는 영속화되어 있지 않다 엔티티의 변화가 일어나는 곳은 반드시 트랜잭션이 필요하다 DB 상에 엔티티 데이터의 변화를 반영하기 위해서 ! 스프링 시큐리티 컨텍스트에서의 JPA 엔티티는 준영속 상태 스프링 시큐리티 컨텍스트 principal에는 해당 엔티티를 구분할 수 있는 ID 정도의 문자열만 저장하자 따라서 @Authenti.. 2023. 12. 1.
[231130] 팀과제 수정 팀 과제 수정 깃허브: https://github.com/dlwls423/hobby-bunage-2 GitHub - dlwls423/hobby-bunage-2: 팀과제 hobby bungae 수정 팀과제 hobby bungae 수정. Contribute to dlwls423/hobby-bunage-2 development by creating an account on GitHub. github.com API 명세: https://documenter.getpostman.com/view/30859017/2s9YeHZAAB hobbybungae The Postman Documenter generates and maintains beautiful, live documentation for your collect.. 2023. 11. 30.