목록스프링 (12)
공부함
지금까지 테스트 코드를 짜면서 테스트 코드 자체에만 집중했지 테스트 환경에는 크게 관심 없이 남들이 하는대로 가져다 썼던 것 같다. 그래서 이번에는 테스트 환경설정에 대해 알아보려고 한다.@Mock VS @MockBean먼저 mock 관련해 간단하게 알고 넘어가자.@MockMock 객체를 생성해 사용한다.스프링 컨텍스트와 무관하다.단위 테스트에 사용@MockBeanMock 객체를 생성해 스프링 컨텍스트에 등록한다.통합 테스트에 사용@SpringBootTest@SpringBootTest는 전체 애플리케이션 컨텍스트를 로드한다. 즉 모든 빈을 로드한다.@SpringBootTest는 이러한 상황에서 사용하면 좋다.전체 애플리케이션 컨텍스트가 필요할 때통합 테스트를 하고 싶을 때 (모든 빈, 서비스, 컨트롤러 ..
작년에 사이드프로젝트를 진행하면서 api서버를 개발했다. 프론트에서 http 요청 바디에 데이터를 넘겨주면 api서버에서는 무조건 dto로 받기로 했다. 팀원이 그렇게 처음부터 정하고 프로젝트를 진행했기 때문에 왜 dto를 사용해야 되는지 고민해보지를 않았다. dto를 쓰지 않은 코드를 보면서 역체감으로? 왜 dto를 쓰는게 좋은 지 느끼게 된 바가 있어 글을 작성해보겠습니다. 어디까지나 제 주관적인 생각입니다. HttpServletRequest getParameter 사용 @RequestMapping("/messages") public ModelAndView make(HttpServletRequest request) { String title = request.g..
출처김영한님 스프링 핵심 원리 기본편 강의https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard 스프링 핵심 원리 - 기본편 강의 | 김영한 - 인프런김영한 | 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보www.inflearn.com 스프링 컨테이너가 필요한 이유스프링 컨테이너가 무엇인지 알아보기 전에 먼저 스프링 컨테이너가 왜 필요한지 알아보자. public class OrderServic..
서블릿이란?서블릿(Servlet)이란 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. 서블릿은 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해준다. 서블릿은 클라이언트의 요청에 따라 동적으로 작동하는 웹 애플리케이션 컴포넌트이다. 서블릿이 필요한 이유서블릿을 사용하면 개발자는 의미있는 비즈니스 로직 개발에만 집중하면 되므로 효율적인 개발이 가능하다. @WebServlet(name = "helloServlet", urlPatterns = "/hello")public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest..
rednose 프로젝트를 진행하면서 카카오 로그인 부분을 맡았고 관련해서 배운 점들을 정리해보겠습니다.카카오 로그인kakao developers 문서에서 설명하는 흐름은 위와 같습니다. 먼저 사용자는 프론트엔드에서 제공하는 kakao login 버튼을 눌러 카카오 로그인을 시도합니다.step1사용자가 카카오계정 로그인과 동의 화면에서 동의하고 계속하기를 클릭하면 kakao auth server에서 인가코드를 redirect uri로 보내줍니다. 이 redirect uri는 저희가 kakao developers에 앱을 등록하고 정할 수 있습니다. 인가 코드를 받고자 하는 uri를 지정하면 됩니다. @AccessibleWithoutLogin @GetMapping("/login/kakao") ..
서론 프로젝트를 진행하며 예외처리에 관해 가은님과 의견차이가 있었다. public enum ErrorCode { INVALID_REQUEST_BODY, SOLUTION_NOT_FOUND, PROBLEM_NOT_FOUND, PROBLEM_LINK_NOT_FOUND, COMMENT_NOT_FOUND, ... 이하생략 } 현재 우리가 사용하는 ErrorCode는 위와 같다. public class SolutionNotFoundException extends NotFoundException { public SolutionNotFoundException() { super(SOLUTION_NOT_FOUND, "풀이를 찾을 수 없습니다."); } } 커스텀한 예외 클래스에서 예외코드를 사용할 때는 위와 같이 예외메세..
사용자 정의 Repository가 필요한 이유 public interface ReviewRepository extends JpaRepository{ ... } Spring이 JpaRepository를 상속하는 인터페이스의 구현체를 자동으로 생성해준다. Service에서는 자동 생성된 구현체를 주입받아 사용한다. 기본으로 제공하는 메서드들을 사용할 수 있다. 더해서 명명규칙에 따라 메서드를 작명하면 알아서 쿼리를 짜준다. 개발자는 메서드를 가져다 쓰기만 하면 되는 편리한 기능이다. https://zara49.tistory.com/130 [JPA] JPA Repository 메서드 명명규칙 JPA는 우리가 쿼리를 열심히 짜는것을 대신해 간단하게 표현하여 쿼리를 사용할 수 있도록 해준다. 그렇다면 어떤 형태로..
프로그레인저 프로젝트에서 페이지네이선에 Pageable 객체를 사용하도록 전체적인 수정사항이 있었다. Pageable을 사용하는 편이 통일성도 있고, 코드도 간결해지고.. 여러 장점이 있는 것 같다. 다만 내가 구현한지 좀 지난 기능들이고 그때는 구현이 급해서 참고한 내용들을 따로 정리를 못했다. 그래서 관련 내용들이 기억이 잘 안난다.. 내용을 복습하고 정리해보자. https://tecoble.techcourse.co.kr/post/2021-08-15-pageable/ Pageable을 이용한 Pagination을 처리하는 다양한 방법 Spring Data JPA에서 Pageable 를 활용한 Pagination 의 개념과 방법을 알아본다. Pageable을 활용한 Pagination… tecoble...