Test Double
·
Spring
스프링 애플리케이션에서 서비스 계층에 대한 단위 테스트를 작성한다고 해보자. 보통 서비스 계층은 트랜잭션을 제어하는 역할을 수행하기 때문에 여러 종속성들이 존재하고, 기능을 테스트하기 위해 이런 종속성들이 반드시 필요할 수 있다. 그렇다면 서비스 계층은 어떻게 테스트를 해야 할까? 서비스 계층 테스트의 어려움 서비스 계층은 의존하는 코드가 많다. 코드의 동작을 모두 테스트하기 위해 종종 입력을 설정해야 하며, 부수 효과를 검증해야 한다. 데이터베이스에 여러 값으로 테스트해야 될 수도 있다. 이때 코드의 부수 효과로 데이터베이스에 어떤 값을 저장하는지 확인해야 한다. 통합 테스트로 변질될 가능성이 있다. 즉 서비스 계층을 테스트하려면 서비스가 가지고 있는 의존성을 설정해 주고, 발생할 수 있는 부수 효과에..
웹 서버와 웹 애플리케이션 서버
·
Spring/스프링 MVC 1편
백엔드 쪽을 공부하다 보면 마주치는 용어 중 웹 서버와 웹 애플리케이션 서버라는 것이 있다. 두 서버는 각자 다른 용도로 사용되며, 백엔드 단의 구조의 구성 요소들이기 때문에 한번 정리하고자 한다. 웹 서버 IBM에 정의된 문서에 따르면 다음과 같다. 웹 서버는 주로 웹 브라우저에서의 하이퍼텍스트 전송 프로토콜(HTTP) 요청에 응답하여 정적 웹 콘텐츠(예: HTML 페이지, 파일, 이미지, 동영상)를 제공합니다. 이때 웹 서버는 엄밀히 따지면 소프트웨어와 하드웨어로 나누어진다. 하드웨어 Web 서버가 설치되어 있는 컴퓨터 소프트웨어 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 콘텐츠를 제공하는 컴퓨터 프로그램 대표적인 웹 서버로는 Nginx, Apache 등이 있다. 웹 애플리케이션 서버 ..
스프링의 소개
·
Spring/스프링 기본 개념
소프트웨어 프레임워크는 특히 처음 시작하는 입문자가 제대로 활용하기 어렵다. 스프링은 특히 프레임워크가 지향하는 가치와 프로그래밍 모델을 이해하지 못하고는 제대로 활용할 수 없다. 스프링이란? 스프링은 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크이다. 애플리케이션 프레임워크는 개발을 빠르고 효율적으로 할 수 있도록 애플리케이션의 바탕이 되는 툴과 공통 프로그래밍 모델, 기술 API 등을 제공한다. 💡 Enterprise Application 기업이나 정부와 같은 기업 환경에서 사용하는 대규모 소프트웨어 플랫폼을 말하며, 기업 운영에 필요한 기능을 수행하는 시스템들을 통합하여 기업 전체의 효율적인 협력과 조정을 위해 설계된다. 주요 목적은 핵심 비즈니스 프로세스(e.g 영업, 회계..
DI 프레임워크 만들어보기
·
Spring
이제 Reflection API와 애노테이션을 활용하여 간단한 DI 프레임워크를 만들어보겠다. 사실 프레임워크라고 하기에도 민망한 수준이지만 간단하게 DI의 동작 원리를 활용하는 방식으로 만들어보고자 한다. 먼저 DI를 테스트하기 위해 아래와 같은 구조를 구축하였다. 이제 애노테이션을 이용해 필드 주입을 구현해볼 것이다. 필드를 주입할 부분에 @Inject 키워드를 명시한 후, Reflection API를 통해 해당 애노테이션을 가진 타입을 동적으로 생성하는 방식을 사용할 것이다. 먼저 간단하게 코드로 구현해 보자. // java/ public class ContainerService { public static T getObject(Class classType) { return createInstanc..
lee-sh
'Spring' 카테고리의 글 목록