본문 바로가기

인프런10

섹션 5-3 [DI와 테스트, 디자인 패턴] DI를 이용한 Decorator, Proxy 패턴 DI를 이용한 Decorator, Proxy 패턴우리는 앞서 HelloController가 의존하고 있는 HelloService를 interface화 하여 의존관계의 방향을 변경하였습니다. 코드 레벨에서의 의존방향성은 변경하였지만 결국 런타임시에는 HelloController가 의존하고있는 객체 즉 실제 구현된 객체가 주입되어야 하는데 Spring Container가 Assembler역할을 수행할때 SimpleHelloService를 주입해야할지 ComplexHelloService를 주입해야할지 결정할 수 없게 됩니다.이러한 문제점을 해소할 수 있는 방법은 의존성 주입에 우선순위를 정해주게 됩니다. 데코레이터 패턴을 예시로 들어보겠습니다. HelloDecoratort.classpackage com.tob.. 2024. 6. 12.
섹션 5-2 [DI와 테스트, 디자인 패턴] DI와 단위 테스트 DI와 단위 테스트5-1 섹션 에서는 Spring 서버에 직접적으로 네트워크 통신을 통해 테스트를 진행 하다 보니 테스트 수행 속도가 오래 걸리지만 아래 코드처럼 HelloService를 테스트를 진행 할 때는 네트워크를 통신을 하지 않고 Java객체를 직접적으로 호출하여 테스트 하므로 수행 속도가 월등히 빠릅니다. package com.tobyspring.tobyspringboot; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; public class HelloServiceTest { @Test void simpleHelloService() { HelloService.. 2024. 6. 12.
섹션 3-5 [독립 실행형 서블릿 애플리케이션] 프론트 컨트롤러 프론트 컨트롤러서블릿은 요청마다 하나하나 매핑하여 구현이 필요하여 보일러 플레이트가 발생하는 문제점이 있다. 따라서 서블릿에 접근방법을 개선이 필요로 했고 또한 서블릿은 웹 요청과 응답을 직접적으로 request Object와 response Object를 다뤄줘야 하는 방식이기 때문에 자연스럽지 않는 문제가 있었습니다. 따라서 기본적인 서블릿으로만 기능을 개발하는데 한계가 있었습니다.  이러한 한계를 극복하기 위해 프론트 컨트롤러가 등장하게되었습니다.프론트 컨트롤러는 서블릿은 각 URL에 맞게 맵핑을 해서 각기 다른 서블릿이 다른 서블릿 URL로 들어오는 요청을 맡아서 처리하는 방식으로 동작을 해야하는데 서블릿에 공통적으로 등장하는 코드를 중앙화된 제일 앞단에 존재하는 컨트롤러라고 이름 붙이는 오브젝트.. 2024. 5. 30.
섹션 3-3 [독립 실행형 서블릿 애플리케이션] 서블릿 등록 서블릿 등록서블릿 컨테이너에서 관리되는 웹 컴포넌트를 서블릿이라고 한다. 서블릿 컨테이너는 1개 이상의 서블릿을 관리할 수 서블릿 컨테이너는 웹 클라이언트로 요청을 받으면 여러개의 서블릿 중에서 어떤 서블릿에게 요청을 처리하면 될지를 결정하는데 그 과정을 매핑이라고 합니다. 매칭된 서블릿은 웹 응답을 만들기 위해 필요로하는 작업을 수행하고 작업을 종료하면 컨테이너가 다시 웹 클라이언트에게 웹 응답형태로 돌려줍니다.  package com.tobyspring.tobyspringboot; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.. 2024. 5. 30.
섹션 2-1 [스프링 부트 시작하기] 개발환경 준비 스프링 부트 개발환경 구성스프링 부트를 개발하기 위해 JDK, IDE, Spring Boot 프레임워크 프로젝트 환경 준비 VersionSpring Boot 2.7.6JDK 8, 11, 17JDK 벤더사중 결정Eclipse TemurinMicrosoft OpenJDKAmazon CorrettoAzul JDKOracle JDK개발환경 구성 플러그인jabba: 노드진영에 버전관리 툴인 NVM과 유사하게 JAVA 버전을 간편하게 관리 가능sdkman : JDK뿐만아니라 다양한 개발툴들을 병렬로 관리 가능IDE 스프링 부트 통합 개발환경IntelliJ IDEA UltimateSTSVisual Studio CodeSpring Boot 프로젝트 생성 툴Spring Boot CLISpring Boot initiali.. 2024. 5. 29.
섹션 1-5 [스프링 부트 살펴보기] 스프링 부트의 이해 스프링 부트를 이해 한다는건 어떤 의미일까? 스프링 부트를 이용한 개발 방법부트가 결정한 기술과 구성, 디폴트 설정을 수용외부 설정 파일을 이용한 설정 변경 방법을 활용아주 빠르게 개발을 시작할 수 있다.스프링 부트를 이용한 개발의 오해와 한계애플리케이션 기능 코드만 잘 작성하면 된다?처음에는 맞는 이야기일 수 있으나 여기서 그치면 안된다.스프링을 몰라도 개발을 잘 할 수 있다?스프링 부트는 스프링을 기반으로 하기 때문에 스프링에 대한 학습은 꼭 필요하다.스프링 부트가 직접적으로 보여주지 않는 것은 몰라도 된다.스프링 부트의 철학이 아니다, 보여주지 않는 부분에 대해서도 검토해야한다.뭔가 기술적인 필요가 생기면 검색을 한다.꾸준한 학습이 필요합니다.스프링 부트를 이해하게 되면?스프링 부트가 스프링의 기술.. 2024. 5. 28.