스프링 컨테이너와 스프링 빈
·
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..