개요 로컬에서 개발할 때 h2 In-Memory DB를 사용하던 중, h2.console.enabled 설정을 true로 하고 애플리케이션을 기동시켰는데 애플리케이션 기동이 안되고 오류가 발생했다. 📍 오류 내용 This is because there is more than one mappable servlet in your servlet context: {org.h2.server.web.JakartaWebServlet=[/h2-console/*], org.springframework.web.servlet.DispatcherServlet=[/]}. This method cannot decide whether these patterns are Spring MVC patterns or not. If this..
전체 글
TDD(Test Driven Development)란 ? TDD란 “테스트 주도 개발” 이라는 뜻으로, 프로덕션 코드보다 테스트 코드를 먼저 작성해서 테스트가 구현 과정을 주도하는 개발 방법론이다. TDD 과정 (RED-GREEN-REFACTOR) TDD는 아래와 같은 RED - GREEN - REFACTOR 과정을 거치며 프로덕션 코드를 완성해간다. 1단계 : RED 기능을 구현하기 전 테스트 코드를 먼저 작성하고, 테스트를 실행시켜 실패하는 과정을 겪는다. 📌 예시 아래의 코드는 TDD의 RED 과정의 예시로, 음료의 총 금액을 구하는 calculateTotalPrice 메소드의 단위 테스트 코드이다. 현재 calculateTotalPrice 메소드는 구현되지 않았고, 테스트 코드만 작성해놓은 상태이..
Spring Web MVC 란? Spring Web MVC란 Spring Framework와 Servlet API를 기반으로 하는 웹 애플리케이션 프레임워크로, 주로 Spring MVC라고 줄여서 부릅니다. 이 Spring MVC는 이름에서 유추할 수 있듯이, 웹 요청을 Model-View-Controller로 역할을 분리해 처리하는 MVC 패턴을 사용한다는 특징이 있고 (그 중에서도 Controller 역할을 Servlet이 수행하고 결과를 JSP를 통해 리턴하는 MVC2 패턴을 사용) 데이터 바인딩 및 검증 기능을 제공하며, Interceptor를 제공해 요청을 처리하기 전 후로 보안 / 로깅과 같은 작업을 수행할 수 있다는 특징이 있습니다. Spring MVC의 장단점은 다음과 같습니다. 장점 Mo..
개요 AWS(Amazon Web Services)는 아마존이 제공하는 클라우드 컴퓨팅 플랫폼으로, 간편하게 자신만의 웹 서비스를 구축할 수 있게 도와준다. 최근에는 IT 기업 부터 사이드 프로젝트를 진행하는 취준생까지 AWS 를 매우 많이 사용하고 있다. 하지만 AWS는 사용하는 만큼 비용을 지불하는 Pay-as-you-go 정책을 사용하고 있기 때문에 자칫 잘못 사용하게 된다면 과금 폭탄을 맞을 수도 있기 때문에 있으니 조심해서 사용해야 한다. (검색해서 찾아보면 실제로 백만원 단위 부터 억 단위로 과금 폭탄을 맞은 사람들이 있다..) 이번 글에서는 이러한 과금 폭탄을 피하기 위해서 필요한 몇가지 설정을 소개하려 한다. 비용 모니터링 설정 내가 사용하고 있는 클라우드 서비스의 요금이 특정 가격을 넘을 ..
Entity Entity는 실제 DB 테이블과 매핑되는 클래스로, 테이블의 ID값을 기준으로 객체를 구분하고 비즈니스 로직을 포함한다. 실제 테이블과 매핑되기 때문에 테이블 컬럼이 추가되거나 변경될때마다, Entity 클래스 또한 변경된다. 그렇기 때문에 Entity 클래스에는 가급적 Setter를 열어두지 말고, 생성자 메소드를 따로 생성하는 전략을 사용하는 것이 좋다. (Setter로 객체를 생성하게 하면 필드가 변경될 때 마다 Setter를 사용하는 곳을 수정해야 한다.) 또한, Entity 클래스에는 테이블의 민감한 정보를 다루는 필드도 포함되어 있기 때문에 (ex) password ) API 요청값 / 응답값에 Entity 객체를 사용하지 않는 것이 좋다. 다음은 User Entity의 예시 ..
Bean Scope 란 ? Bean Scope(빈 스코프)란 Bean으로 등록한 객체가 생성되고 소멸 될 때까지 생존하는 범위를 의미한다. Spring에서 제공하는 Bean Scope는 총 6가지로 Singletone / Prototype / Request / Session / Application / WebSocket 가 있다. Spring의 기본 Bean Scope는 Singletone이고 원한다면 Bean을 등록할 때 설정을 변경할 수 있다. 단, 애플리케이션의 동작과 메모리 사용 등에 큰 영향을 끼치는 설정이기 때문에 주의해서 사용해야 한다. 빈 스코프 설정 방법 빈 스코프는 XML 또는 자바 어노테이션으로 지정할 수 있는데 예시는 아래와 같다. 📌 XML 방식 📌 자바 어노테이션 방식 @Con..