HTTP 요청 데이터 개요 HTTP 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법 1. get ->쿼리 파라미터 /url?username=kim&age=20 메시지 바디없이 url에 쿼리파라미터를 포함 검색 필터 페이징등에서 많이 사용하는 방식 2. post -> html form content type : application/x-www-form-urlencoded 메시지 바디에 username=kim&age=20 회원 가입, 상품주문, html form 사용 3. http message body에 데이터를 직접 담아서 요청 http api에서 주로 사용 json, xml, text 데이터 형식은 주로 json에서 사용 post put patch HTTP 응답 데이터 1. 단순 텍스트 응답..
생성자 주입 : 생성자를 통해서 의존 관계를 주입 받는 방법. 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용 수정자 주입(setter 주입) : setter라 불리는 필드의 값을 변경하는 수정자 메서드를 통해서 의존관계를 주입하는 방법 선택, 변경 가능성이 있는 의존관계에 사용 자바빈 프로퍼티 규약(set~, get~함수등을 통해서 값을 읽고 수정함)의 수정자 메서드 방식을 사용하는 방법 필드 주입 : 필드에 바로 주입하는 방법이다. 특징 코드가 간결해서 많은 개발자들을 유혹하지만 외부에서 변경이 불가능해서 테스트 하기 힘들다는 치명 적인 단점 DI 프레임워크가 없으면 아무것도 할 수 없다. 사용하지 말자! 애플리케이션의 실제 코드와 관계 없는 테스트 코드 스프링 설정..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/pOQ8y/btsglw3yXNw/kRaetSN6KgxjL7tktQskR1/img.png)
1. 컴포넌트 스캔과 의존관계 자동주입 시작하기 - 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML -> 설정 정보에 직접 등록할 스프링 빈을 나열했다. - 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다 - 의존관계도 자동으로 주입하는 @Autowired 라는 기능도 제공한다. @Configuration @ComponentScan( basePackages = "hello.core.member", excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) public class AutoAppConfig { } - 컴포넌트 스캔을 사용하려면 먼저 @Com..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bxVTDO/btsgcr3uh4G/jEtqsDWOykI4zqcK4a5SCk/img.png)
1. 웹 애플리케이션과 싱글톤 - 스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다. - 스프링 애플리케이션은 웹 애플리케이션이다. - 여러 고객이 동시에 요청을 한다. @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer (){ AppConfig appConfig = new AppConfig(); //1. 조회 : 호출할때마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); //2. 조회 : 호출할때마다 객체를 생성 MemberService memberService2 = appConfig.memberService(); //참조 값이 다른 것을 확인 System.ou..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/BAZ6F/btsexh2r269/Schw93c5WLeoSMcyMIgTZk/img.png)
1. 스프링 컨테이너 생성 ApplicationContext : 스프링 컨테이너, 인터페이스 , XML을 기반이나 애노테이션 기반의 자바 설정 클래스 (AppConfig 를 사용했던 방식)로 만들 수 있다. 스프링 컨테이너는 자세하게 BeanFactory , ApplicationContext(대분분 사용) 로 구분 자바 설정 클래스를 기반으로 스프링 컨테이너( ApplicationContext ) //스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 스프링 컨테이너를 생성할 때는 구성 정보를 지정해주어야 한다. -> AppConfig.class 를 구성 정보로 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/tKfOe/btsezLuNwIQ/ARCWwoj8GcAOVUB92qI2pK/img.png)
1. 새로운 할인 정책 개발 할인 정책을 지금처럼 고정 금액 할인이 아니라 좀 더 합리적인 주문 금액당 할인하는 정률% 할인으로 변경하기. how? FixDiscountPolicy 뿐만아니라 RateDiscountPolicy class도 만들어주기 public class RateDiscountPolicy implements discountPolicy{ private int discountPercent = 10; @Override public int discount(Member member, int price) { //control + shift + T를 이용해서 test만들기 if(member.getGrade() == Grade.VIP) { return price * discountPercent/100;..