Framework/Spring10 [Spring] 팩토리메서드 패턴 적용해서 확장성 높은 코드 만드는 법 문제상황 게시판 목록 조회 API 게시판 유형 별로 다른 테이블을 조회해야 했다. API를 각각 분리하거나, 하나의 게시판 조회 API에서 Type에 따라 if/else 분기에 따라 다른 요소를 조회해야 했다. 예) 일반게시글, 비밀게시글, 인기글A, 인기글B 기존 레거시 시스템에서는 이러한 유형의 데이터들을 if/else로 Service 레이어에서 각각 다른 Repository (여기선 Mapper)를 사용해서 로직을 처리하였다. @Service @RequiredArgsConstructor public class CommunityBoardService { private final CommunityContentsFactoryService communityContentsFactoryService; @Tra.. Framework/Spring 2024. 3. 7. DispatcherServlet를 중심으로 본 스프링 MVC 동작 원리 오늘은 Spring MVC를 이해하는 핵심인 DispatcherServlet의 동작원리를 알아봄으로써 스프링 웹 어플리케이션이 어떻게 동작하는지 알아보도록 하겠습니다. 정의 디스패처 서블릿(DispatcherServlet)은 Dispatch(보내다) + Servlet(클라이언트의 요청을 처리하고 결과를 반환하는 Servlet의 구현 규칙을 지킨 웹 프로그래밍 기술)의 합성어입니다. 디스패처 서블릿은 서버로 들어오는 모든 HTTP 요청을 가장 먼저 받아서 적합한 컨트롤러에게 응답을 위임하는 프론트 컨트롤러(FrontController)입니다. 역할 이러한 역할은 위와 같은 다이어그램으로 도식화될 수 있습니다. 그런데 프론트 컨트롤러(FrontController), 핸들러(Handler), 핸들러 어댑터(H.. Framework/Spring 2024. 1. 31. 모니터링을 위한 스프링 액추에이터 알아보기 프로덕션 준비 기능 전투에서 실패한 지휘관은 용서할 수 있지만 경계에서 실패하는 지휘관은 용서할 수 없다는 말처럼, 서비스를 운영하는 개발자는 장애 상황이 언제든지 발생할 수 있다. 하지만 모니터링(경계)하여 장애 원인을 파악하고 명확하게 해결하는 것이 중요하다. 개발자가 애플리케이션을 개발할 때 요구사항만 개발하는 것이 아니라, 서비스를 실제 운영 단계에 올렸을 때 서비스에 문제가 없는지 모니터링하고 지표들을 심어서 감시하는 행위를 해야 한다. 이러한 기능들을 프로덕션 준비 기능이라고 부른다. 쉽게 말해, 프로덕션을 운영에 배포할 때 준비해야 하는 비 기능적 요소들을 뜻한다. 아래와 같은 요소가 존재한다. 지표, 추적, 감시 모니터링 스프링 액추에이터 스프링 부트가 제공하는 액추에이터는 프러덕션 준비 .. Framework/Spring 2024. 1. 18. [Test] Spring Boot 환경에서의 유닛테스트와 통합테스트, 슬라이스 테스트 서론 오늘은 Spring Boot 환경에서 유닛 테스트와 통합 테스트, 각각의 테스트 과정에서 활용되는 어노테이션과 메서드들은 무엇이 있는지 정리해보겠습니다. 대상독자 테스트코드를 처음 작성해보시는 분들, Slice Test를 처음 들어보시는 분들, 테스트코드를 하고 싶지만 심리적인 장벽 때문에 아직 시도해보지 못한 분들에게 이 글을 추천합니다. 이론 유닛 테스트(Unit test)와 통합 테스트 (Integration test) 꼭 짚고 넘어가야 하는 유닛 테스트와 통합 테스트의 정의에 대해서 알아봅시다. 유닛 테스트 보통 개발자가 테스트 코드를 짠다고 하면, 유닛 테스트 짜는 것을 말합니다. 코드 레벨에서의 테스트를 하며, 특정 함수나 클래스와 같이 작고 고립된 코드의 기능을 확인하는 자동화된 테스트.. Framework/Spring 2023. 12. 14. [Spring] IoC와 DI란 무엇인가? 제어의 역전 (IoC, Inversion of Control) 개발자가 작성한 객체나 메서드의 제어를 개발자가 아니라 외부(프레임워크)에 위임하는 설계 원칙을 제어의 역전이라고 한다. 관련 용어 빈 (Spring Bean) 스프링이 IoC 방식으로 관리하는 오브젝트를 뜻한다. 자바 빈과 구분 짓기 위해, 스프링 빈이라고도 부른다. 참고로 스프링 내 모든 오브젝트가 전부 빈이 아니다. 그 중에서 스프링이 직접 그 생성과 제어를 담당하는 오브젝트만을 빈이라고 부른다. 빈 팩토리 (Bean Factory) 스프링의 IoC를 담당하는 핵심 컨테이너를 말한다. 스프링 컨테이너의 최상위 인터페이스로, 스프링 빈을 관리하고 조회하는 역할을 담당한다. 대표적으로 getBean() 메소드를 제공한다. 애플리케이션 컨텍스.. Framework/Spring 2023. 9. 26. [Spring] Spring 프레임워크란 무엇인가? 서론 오늘은 자바 백엔드 진영의 대표적인 프레임워크인 스프링에 대해서 알아보도록 하겠습니다. 본론 스프링의 어원과 탄생 배경 스프링(Spring)이란 영어로 봄을 말합니다. 왜 봄이라고 이름을 지었을까요? 스프링 프레임워크가 등장하기 전인 2000년대 초로 돌아가보면, EJB(Enterprise Java Beans)라는 자바 기업용 애플리케이션 프레임워크를 활용하여 어플리케이션 개발을 했습니다. EJB는 당시 자바의 표준이었죠. 하지만 너무 무겁고 복잡하고 비효율적이었습니다. 이에 불만을 느낀 로드 존슨이란 개발자가 EJB 없이도 고품질의 애플리케이션을 만들 수 있다는 것을 "Expert One-on-One J2EE Design and Development"란 책을 통해 증명해냅니다. 로드 존슨은 순수한.. Framework/Spring 2023. 9. 22. [Spring] JPA Auditing을 활용하여 생성/수정시간 자동화하는 방법 서론 오늘은 Spring Boot 환경에서 JPA Auditing을 활용하여 생성/수정시간 자동화하는 방법에 대해서 알아보겠습니다. 본론 BaseTimeEntity란 클래스를 만들어 생성과 수정 시간이 필요한 모든 요소의 상위 클래스로 지정하여, Entity들의 createdDate, modifiedDate를 자동으로 관리하겠습니다. JPA Auditing Entity 클래스의 상단에 @MappedSuperclass를 추가해줍니다. 이를 추가함으로써, JPA Entity 클래스들이 BaseTimeEntity을 상속할 경우 필드들(createdDateTime, modifiedDateTime)도 칼럼으로 인식하도록 만듭니다. 또 @EntityListeners(AuditingEntityListner.class.. Framework/Spring 2023. 6. 22. [Spring] Spring Boot 환경에서 MySQL과 MyBatis를 설정하는 방법 서론 오늘은 Spring Boot 환경에서 MySQL과 MyBatis 설정을 하는 방법에 관해서 알아보도록 하겠습니다. 목차 MySQL 설치방법 Spring Boot에서 MySQL 설정하기 Spring Boot에서 MyBatis 설정하기 본론 MySQL 설치방법 Mac을 사용한다면, 간단하게 brew로 mysql을 설치해줍니다. brew install mysql 버젼도 확인해봅니다. mysql -V 서버도 실행해봅니다. mysql.server start 그리고 MySQL 초기 설정을 해줍니다. 비밀번호, 익명유저, root 접속 권한 등을 설정해줍니다. mysql_secure_installation 그런 뒤, 접속해줍니다. mysql -u root -p 다시 mysql 서버를 실행하고 설정을 켜줍니다. .. Framework/Spring 2022. 6. 4. [Spring/SpringBoot] 스프링 DB 접근 기술 정리 서론 오늘은 Spring 개발환경에서 DB에 접근하는 다양한 방법에 관해 알아보도록 하겠습니다. 이 글은 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 보고 정리한 글임을 서두에 밝힙니다. 본론 테스트 데이터베이스 먼저, DB 접근 기술을 다루기에 앞서 테스트 DB 환경을 구축하도록 하겠습니다. 이번에 사용할 DB는 H2 데이터베이스입니다. H2 데이터베이스는 테스트용 DB로 사용하기 쉽기 때문에 자주 사용합니다. 환경설정 방법 해당 링크에 접속하여, OS에 맞게 다운로드를 해줍니다. 저는 Mac을 사용하므로, All Platforms를 선택하겠습니다. zip 파일을 열어, 압축을 해제하신 후 파일을 열어봅니다. 그러면 bin, build.bat, build.iml.. Framework/Spring 2022. 5. 29. [Spring] Spring Boot MVC 패턴 익히기 서론 오늘은 Spring의 MVC 패턴에 대해 간단히 알아보고 직접 실습해보도록 하겠습니다. 이 글은 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 보고 정리한 글임을 서두에 밝힙니다. 본론 MVC의 역할 MVC는 각각 M(Model), V(View), C(Controller)에 약자입니다. 각각 역할이 구분되는데요, Model의 경우에는 데이터의 상태를 나타내는 역할을 합니다. View의 경우에는 화면을 구성하는 역할을 하며, Model의 data와 함께 HTML 파일을 브라우저에 전송합니다. Controller의 경우, View와 Model 간의 인터페이스 역할을 하며, 클라이언트의 요청 및 전송 데이터를 수신하고 적절한 결과물을 Model에 담아 View에 전.. Framework/Spring 2022. 5. 21. 이전 1 다음 반응형