Spring MVC - 구조 이해
·
Spring
스프링 MVC 전체 구조 이전에 만들었던 V5와 달라진 점은 이름밖에 없다. 대표적으로 FrontController가 DispatcherServlet으로 바뀌었다. DispatcherServlet 구조 살펴보기스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있다.스프링 MVC의 프론트 컨트롤러가 디스패처 서블릿(DispatcherServlet)이다.그리고 이 디스패처 서블릿이 Spring MVC의 핵심이다. DispatcherServelt 서블릿 등록- DispatcherServlet도 부모 클래스에서 HttpServlet을 상속받아서 사용하고, 서블릿으로 동작한다.- 스프링부트는 DispatcherServlet을 서블릿으로 자동 등록하면서, 모든경로(urlPatterns=" /")에 대해 매핑한다..
스프링 컨테이너와 스프링 빈
·
Spring
스프링 컨테이너 생성스프링 컨테이너가 생성되는 과정// 스프링 컨테이너 생성ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext를 스프링 컨테이너라고 한다.ApplicationContext는 인터페이스이다.XML기반으로 만들 수 있고, 어노테이션 기반의 자바 설정 클래스로 만들 수 있다. (요즘엔 XML로 생성하진 않는다.)바로 이전에 사용했던 방식이 어노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만드는 방법이다.new AnnotationConfigAPplicationContext(AppConfig.class); 는 ApplicationCont..
스프링 핵심 원리(1)
·
Spring
회원 도메인 설계회원 도메인 요구사항- 회원 가입, 조회 가능- 회원은 일반회원, VIP회원 두 가지 등급으로 관리- 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 회원 등급package hello.core.member;public enum Grade { BASIC, VIP} 회원 Entitypublic class Member { private Long id; private String name; private Grade grade; public Member(Long id, String name, Grade grade) { this.id = id; this.name = name; this.gra..
스프링 - IoC
·
Spring
IoCIoC는 객체의 생성 및 관리 권한을 개발자가 직접 하지 않고, Spring Container가 대신 처리하는 개념즉, 객체의 생성, 초기화, 소멸 등의 작업을 Spring이 대신 해주기 때문에 비즈니스 로직에 집중할 수 있다. package org.springframework.samples.petclinic.sample;public class SampleController { SampleRepository sampleRepository; public SampleController(SampleRepository sampleRepository) { this.sampleRepository = sampleRepository; } public void doSomething(..
Path Variable과 Request Param
·
Spring
Client에서 서버로 HTTP 요청을 보낼 때 데이터를 함께 보낼 수 있다.서버에서는 이 데이터를 받아서 사용해야하는데 데이터를 보내는 방식은 여러가지가 있기에 여러 방식에 대한 학습이 필요함 Path Variablehttp://localhost:8080/hello/request/star/Robbie/age/95 // [Request sample]// GET http://localhost:8080/hello/request/star/Robbie/age/95 @GetMapping("/star/{name}/age/{age}") @ResponseBody public String helloRequestPath(@PathVariable String name, @PathVariable int ..
Spring 입문 - DI (의존성 주입), IoC (제어의 역전), Bean
·
Spring
Dependency Injection (의존성 주입) 객체가 자체적으로 필요로 하는 의존성을 생성하는 것이 아니라, 외부에서 주입받는 디자인 패턴입니다. 객체간의 결합도를 낮추기 위해 사용합니다. 주로 Contructor 기반 주입, Field 기반 주입, Setter 기반 주입이 있습니다. DI를 사용하지 않을 경우 package org.example.ChickenStore class ChickenStoreWithoutDI { private val chicken: Chicken = FriedChicken() fun getCookedChicken(): Chicken { chicken.cook() return chicken } } class ChickenStoreWithoutDI2 { private val..