스프링29 섹션 4-11 [독립 실행형 스프링 애플리케이션] SpringBootApplication SpringBootApplication.run을 직접 구현해보자MySpringApplication.classpackage com.tobyspring.tobyspringboot; import org.springframework.boot.web.server.WebServer; import org.springframework.boot.web.servlet.server.ServletWebServerFactory; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet; public class MyS.. 2024. 6. 1. 섹션 4-9 [독립 실행형 스프링 애플리케이션] @Conponent 스캔 @Component스캔지난 시간까지 사용했던 스프링 컨테이너에 빈을 등록하는 방법은 클래스 정보를 레지스터 빈 메소드에 넘겨주거나 아니면 팩토리 메소드를 만들어서 직접 빈 인스턴스를 생성하는 방법을 사용했습니다. 그러나 그것보다 좀 더 간결하게 빈을 등록할 수 있는 방법이 있습니다. 그 방법은 @Component, @ComponentScan 애노테이션을 사용하여 Spring Container에게 Bean구성정보를 전달하는 방식입니다.애노테이션 방식으로 Bean을 등록하면 좋은점은 새로운 Bean을 만들어서 추가할때 매번 구성정보를 다시 등록해줄 필요가 없고 간단하게 Component애노테이션을 사용하면 됩니다. 다만 이러한 편리성 이면에는 Bean으로 등록되는 클래스가 굉장히 많아지게 되면 내가 이 애플.. 2024. 6. 1. 섹션 4-7 [독립 실행형 스프링 애플리케이션] 스프링 컨테이너로 통합 스프링 컨테이너로 통합지금까지 만든 코드는 SpringContainer를 생성하고 Bean을 등록해서 초기화하는 작업을 해주는 SpringContainer작업 파트와 SpringContiner를 활용하면서 SubletContainer를 코드에서 생성하고 FrontController역할을 하는 DispatcherSublet을 등록하는 SubletContainer초기화 코드로 구분되어 질 수 있습니다.이제는 이러한 작업을 하나로 통합하는 과정을 통해 SubletContainer를 만들고 Sublet을 초기화하는등의 작업을 SpringContiner가 초기화 되는 과정중에 일어나도록 코드를 수정해보도록 하겠습니다. /* Spring Container 구현, DispatcherServlet을 사용하기 .. 2024. 6. 1. 섹션 4-6 [독립 실행형 스프링 애플리케이션] 애노테이션 매핑 정보 사용 애노테이션 매핑 정보 사용기존 코드HelloController.classpackage com.tobyspring.tobyspringboot;import java.util.Objects;public class HelloController { private final HelloService helloService; public HelloController(HelloService helloService) { this.helloService = helloService; } public String hello(String name) { return helloService.sayHello(Objects.requireNonNull(name)); }} 애노테이션 매핑 정보 사용 코드package com.tobysp.. 2024. 6. 1. 섹션 4-2 [독립 실행형 스프링 애플리케이션] 의존 오브젝트 추가 의존 오브젝트 추가스프링 컨테이너는 어떤 타입의 오브젝트를 만들때 딱 한번만 생성합니다. 스프링 컨테이너가 가지고 있는 오브젝트를 필요로 하는 여러 오브젝트들이 있을 수 있는데 스프링 컨테이너에 어떤 타입의 빈을 요청할때마다 새로운 오브젝트를 만들어서 제공하는게 아니라 초기에 생성해둔 오브젝트 단하나를 계속해서 제공하여 재사용할 수 있게 합니다. 스프링 컨테이너는 싱글턴 패턴을 사용한 것과 유사하게 어떤 타입의 오브젝트를 딱 한번만 만들어두고 이 오브젝트를 계속 재상용할 수 있게 해주는 기능을 제공합니다. 그래서 스프링 컨테이너를 싱글톤 레지스트리라고도 부릅니다. 이제 HelloController의 책임을 줄여보도록 하겠습니다. HelloController는 클라이언트의 요청만 검증하고 비즈니스 로직은 .. 2024. 6. 1. 섹션 3-7 [독립 실행형 서블릿 애플리케이션] Hello 컨트롤러 맵핑과 바인딩 Hello 컨트롤러 매핑과 바인딩맵핑은 웹 요청에 들어있는 정보를 활용해서 어떤 로직을 수행하는 코드를 호출할 것인가 결정하는 작업이다. /hello 요청이 들어오면 helloController에 hello메소드를 호출해서 로직을 수행하고 그 결과를 리턴하게 한다.바인딩은 헬로 컨트롤러는 웹 요청이나 웹 응답을 직접 노출하는 기술적인 타입을 사용하지 않았습니다. 컨트롤러를 구현한다 하더라도 직접적으로 웹 요청과 응답을 다루는 오브젝트를 사용하지 않습니다. 따라서 파라미터로 넘어온 name값을 String 타입으로 hello 메소드를 호출할 때 인자값으로 넘겨주는 작업을 바인딩이라고 합니다. form을 통해서 굉장히 많은 정보들이 넘어왔을때 dto등을 java bean 형태의 오브젝트를 만들어서 그 안에.. 2024. 5. 30. 이전 1 2 3 4 5 다음