Framework26 [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. [React] CRA(Create React App) 환경에서 env 파일 사용하는 방법 서론 CRA(Create React App) 환경에서는 API 끝점, 키 및 기타 설정과 같은 환경별 구성을 관리하는 것이 확장 가능하고 유연한 애플리케이션을 구축하는 데 매우 중요합니다. 다행히도, CRA는 환경 파일을 사용하여 환경 변수를 처리하는 간단한 방법을 제공합니다. 이 튜토리얼에서는 CRA 프로젝트에서 env 파일을 효과적으로 활용하는 방법에 대해 알아보겠습니다. 1단계: 환경 파일 생성 시작하려면 프로젝트 루트에 새 파일을 만들고 이름을 ".env"로 지정하십시오. CRA는 이 파일을 자동으로 인식하고 개발 중 환경 변수로 내용을 로드합니다. 파일 이름은 점으로 시작해야 하며 파일 확장명이 없어야 합니다. 2단계: 환경 변수 정의 .env 파일 내에서 환경별 변수를 키-값 형식으로 정의할 .. Framework/React & RN 2023. 6. 2. [RN] React Native/Typescript 환경에서 env 파일 사용하는 방법 서론 대상독자 RN 개발 시, env 파일을 사용하고 싶은 개발자 학습목표 오늘은 RN Expo와 타입스크립트 환경에서 env 파일을 설정하는 방법에 대해서 알아보겠습니다. 본론 라이브러리 설치하기 // js yarn add react-native-dotenv; // ts yarn add -D @types/react-native-dotenv; react-native-dotenv를 설치해줍니다. 타입스크립트의 경우, 타입을 지정하기 위한 @types/react-native-dotenv 라이브러리를 추가로 설치해줍니다. babel.config.js 수정하기 그런 뒤, babel.config.js 파일에서 해당 값을 plugins 항목에 넣어줍니다. module.exports = function () { re.. Framework/React & RN 2023. 3. 27. [RN] 자주 쓰이는 단축키, 사이트 모음 본론 환경설정 방법 Setting up the development environment · React Native - 링크 Xcode 빌드 캐시 삭제 Windows : Shift+Command+K Mac : Option+Shift+Command+K 완전 삭제 ~/Library/Developer/Xcode/DerivedData 문제 있는 프로젝트 삭제 Pods Dependency Error rm -rf node_modules && yarn install && cd ios && rm -rf Pods && pod install && cd .. React Dependency Error npm install --force npm install --legacy-peer-deps --force를 하면 package.. Framework/React & RN 2022. 8. 22. [RN] IOS 네이티브 모듈 다루기 서론 오늘은 RN에서 IOS 네이티브 모듈과 직접 통신하는 방법에 관해서 알아보도록 하겠습니다. 본론 먼저, Xcode 상에서 새로운 Object-C 파일을 생성해줍시다. XCode 상, File -> New -> File로 접근할 수 있습니다. Object-C 모듈/메서드 내보내기 // RTCCalendarModule.h #import @interface RCTCalendarModule : NSObject @end 헤더파일에 RCTBridgeModule 모듈을 항상 불러와줍니다. 그래야, JS와 Object-C 간에 통신이 가능합니다. // RCTCalendarModule.m #import "RCTCalendarModule.h" #import @implementation RCTCalendarModule.. Framework/React & RN 2022. 6. 26. [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. 이전 1 2 3 다음 반응형