스프링 프레임워크 스프링 프레임워크는 이전에 EJB(Enterprise Java Beans)를 사용하여 개발하는 것이 일반적이었다. EJB는 개발, 배포, 예외처리, 단위 테스트 등이 쉽지 않은 문제를 안고 있었다. 스프링 프레임워크는 DI를 통해 단위 테스트를 가능하
IoC 컨테이너 (DI 컨테이너) 컨테이너란 무언가를 담고, 특정 기능을 수행하는 프레임워크가 제공하는 논리적 컨텍스트라고 볼 수 있다. 스프링에서는 객체 생성 및 연결의 책임이 IoC 컨테이너로 인계된다. 자바 클래스는 의존성을 정의하고 IoC 컨테이너는 객체를 만들고 의존성을 연결한다. 제어의 역전(IoC)을 구현한 방법으로 DI 의존성 주입을 사용하...
자바 웹 애플리케이션을 개발할 때 가장 많이 쓰이는 웹 프레임워크이다.MVC 는 Model-View-Controller 의 약자로, 기본 시스템 모듈을 MVC 로 나누어 구현되어있다.Model : 뷰를 생성하는 데 사용할 데이터View : 모델을 사용해 화면을 렌더링C
필터와 인터셉터 종종 우리는 어디선가(?) 필터와 인터셉터를 비교하는 질문을 듣곤한다. 분명 비슷한 부분이 있기 때문에 그 명확한 차이를 구별하는 것이 중요하다고 생각한다. 그렇다면 필터와 인터셉터의 비슷한 점은 무엇인가? 그것은 바로 핸들러 메서드가 호출되기 전/후에 HTTP 요청에 접근하여 특수한 작업을 할 수 있다는 것이다. 두 개 이상부터 모든 ...
핵심기능(비즈니스 로직)과 공통기능(인프라 로직)의 구현을 분리할 수 있다.공통기능이란 여러 객체에 공통적으로 적용할 수 있는 기능으로 애플리케이션의 여러 지점에 걸쳐있는 기능이다.공통기능을 모듈화함으로써 재사용성을 높여주는 프로그래밍 기법이라고 할 수 있다.대표적으로
정의 핵심 설계 목표 중 하나는 관심사의 분리(Separation of Concerns)이다. 레이어 아키텍처를 통해 관심사를 분리할 수 있다. 또한, 단위테스트가 단순해지고, 다음 레이어에 대한 의존성을 모킹하여 완전히 테스트할 수 있다. 각 레이어마다 다른 스프링 컨텍스트를 사용하는 것이 좋다. 대표적인 아키텍처 프레젠테이션 레이어 가장 복잡한 ...
스프링 프레임워크를 사용함으로써 단위테스트가 용이해진다는 것을 알고있다. 이는 다른 말로 해석해보면, 애플리케이션을 개발할 때는 단위테스트 작성이 중요하고, 스프링은 단위테스트를 지원하는 무엇인가를 제공하고 있다고 봐도 괜찮을 것이다. 이번 글에서는 스프링이 테스트를
Mock 객체란 모듈의 겉모양이 실제 모듈과 비슷하게 보이도록 만든 가짜 객체를 의미한다.Mockto는 객체를 Mocking하여 테스트할 수 있도록 지원하는 일종의 프레임워크. 스프링부트에서는 기본 스펙으로 사용한다.테스트 작성을 위한 환경 구축이 어려울 때환경 구축을
유효성 검사는 보통 객체가 생성될 때 수행되어 값이 보장된 상태에서 객체 생성을 허용하기 위한 용도로 사용한다.요청을 통해 들어오는 form 객체 (or DTO)에 대해 값의 유효성 검사(validation)하는 것은 많은 이점을 준다.도메인 규칙과 관련된 valida
Spring Data 스프링 애플리케이션에서 여러 종류의 데이터베이스(RDBMS, MongoDB..)에 접근하는 일관되고 추상화된 인터페이스를 제공 가장 추상화된 모듈로 Spring-Data-Commons가 있고 그 안에는 CrudRepository와 PagingAn
Spring REST Docs란? API문서 작성을 자동화해주는 도구는 여러가지가 있지만 대표주자로 Swagger와 Spring Rest Docs가 있다. Swagger는 API 동작을 테스트하는 용도에 더 특화되어있다. 문서 상에도 실제로 API call이 가능하다. 반면 Spring REST Docs는 성공하는 Test Case를 기반으로 API 스펙...
웹 애플리케이션 개발을 처음 시작했다면, 요청과 응답으로 엔티티를 바로 사용하는 경험을 누구나 해보았을 것이다.바로 아래 코드처럼 말이다.위와 같이 엔티티를 바로 응답으로 return하게 되면 UI계층과 도메인에 의존성이 생기게 된다.우리는 UI와 도메인의 독립적인 개
질문 답변 게시판을 만드는데, 질문에 해시태그를 등록하여 카테고리를 나누려고 한다. 해시태그를 질문에 등록하는 API를 만들어보자.질문과 해시태그의 연관관계를 정의하자.하나의 질문은 N개의 해시태그를 가질 수 있다. 또한 하나의 해시태그는 여러 개의 질문에서 가질 수
Spring Events Spring ApplicationContext는 이벤트를 발행하는 기능을 제공한다. 스프링이 관리하는 이벤트는 기본적으로 다음 가이드를 따른다. 스프링 이벤트는 ApplicationEvent을 상속한다. publisher는Applic