SOPT에서 합동세미나를 위해 서버 개발을 하면서 비즈니스 로직에 빌더를 호출하여 엔티티를 DTO로 변환하는 과정이 가독성을 떨어뜨리고 번거롭다는 생각이 들었다. 이를 해결할 수 있는 방법으로 MapStruct가 있다는 것을 알게되어 실제 프로젝트에서 활용한 코드를 바탕으로 소개해보고자 한다. 실제로 프로젝트를 진행하며, private로 서비스 코드 내에서 매핑하는 함수를 일일이 만드는 것은 활용도가 떨어지고, 가독성도 떨어진다고 생각했다. MapStruct는 빈 매퍼 클래스를 자동으로 생성해주며, 어노테이션 기반으로 작성된다는 장점이 있다. 같은 기능의 라이브러리로 modelMapper라는 것도 존재한다고 하는데, 이 라이브러리는 써본적이 없기도하고, 리플렉션이 존재하여 MapStruct가 더 성능이 ..
SOPT에서 활동하며 스프링 부트 개발 시 에러 핸들링을 해주어야 할 일이 많이 있었다. 32기 때 이런 에러 핸들링을 스스로 하지 않았고, 앱잼 때도 리드 언니가 미리 해주어 서비스 단에서 커스텀 에러를 던지게 되더라도 우리가 만든 공통 형식으로 잘 찍히는 것만 확인하고 그 원리를 이해하지 않았던 것이 아쉬웠다. 그래서 이번 합동 세미나를 진행하며 에러 핸들링을 했던 것을 정리해보고자 한다 :) 1. Error을 관리할 Enum 과 CustomException 만들기 - API를 작성할 때 따로 Custom Error Handler를 만들어주지 않는다면, Runtime Error 발생 시 모두 500 Error로 Response가 전달되게 된다 { "timestamp": "2023-11-25T22:09..
[Spring Intro] Section 06. 스프링 DB 접근 기술 강의: 김영한의 스프링 입문 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/ # 들어가기 전 이전 포스팅까지는 회원 정보를 메모리에 저장했기 때문에 서버를 껐다 켜면 데이터가 메모리에서 모두 사라졌다 실무에서는 이런 일이 발생하면 안 되기 때문에 데이터베이스를 통해 저장하고 관리해야 한다 이를 위해 H2 데이터베이스를 설치하고, 데이터베이스의 SQL을 통해 애플리케이션 서버와 DB를 연결해 볼 것이다 연결할 때 필요한 것이 바로 Jdbc 기술이며, 오랜 전의 ..
[Spring Intro] Section 05. 회원 관리 예제 - 웹 MVC 개발 강의: 김영한의 스프링 입문 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/ # 회원 웹 기능 - 홈 화면 추가 1. 홈 컨트롤러 추가 java/hello/hellospring/controller/HomeController.java를 다음과 같이 작성한다 @GetMapping("/")에서 "/"는 처음의 도메인(localhost:8080) 경로를 의미한다 return "home"; 구문은 template 내의 home.html을 찾아 반환하는 역할..
[Spring Intro] Section 03. 회원 관리 예제 - 백엔드 개발 강의: 김영한의 스프링 입문 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/ # 비지니스 요구사항 정리 1. 비지니스 요구사항 데이터: 회원 ID, 이름 기능: 회원 등록, 조회 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) 즉, 어떤 데이터베이스를 사용할지는 정하지 않았다고 가정한다 2. 일반적인 웹 애플리케이션 계층 구조 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 핵심 비지니스 로직 구현 ex. 회원은 중복가입을 할 수 없다 리포지토리:..
[Spring Intro] Section 02. 스프링 웹 개발 기초 강의: 김영한의 스프링 입문 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/ # 스프링 웹 개발 기초 정적 컨텐츠: 파일을 그대로 웹브라우저에서 내려주는 것이다 MVC와 템플릿 엔진: 서버에서 HTML을 프로그래밍해 동적으로 내려주는 것이다 API: JSON이라는 데이터 구조 포맷으로 클라이언틍게 데이터를 전달하는 방식이며, 서버끼리의 데이터 통신에도 사용한다 # 정적 컨텐츠 1. 정적 컨텐츠 스프링 부트 정적 컨텐츠 기능: https://docs.spring...