일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ocp
- 참조변수
- html form
- 코드트리조별과제
- fielderror
- http 메시지 컨버터
- 김영한
- HttpServletResponse
- 오블완
- 의존관계
- 다형성
- @configuration
- java
- 오버라이딩
- 서블릿
- 코드트리
- 추상클래스
- 백준
- 티스토리챌린지
- 스프링컨테이너
- 코딩테스트
- JSON
- equals()
- 인터페이스
- 스프링
- 싱글톤
- DI
- objecterror
- 테스트코드
- 프록시
- Today
- Total
목록TIL/김영한의 스프링 핵심 원리 (34)
minOS
스프링에 등록된 모든 빈 조회 class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("모든 빈 출력하기") void findAllBean(){ String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { Object bean = ac.getBean(beanDefinitionName); System.out.println("name = " + bean..
스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 1) ApplicationContext를 스프링 컨테이너이고 인터페이스다. 2) 스프링 컨테이너는 XML 기반으로 만들 수 있고 , 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 3)'new AnnotationConfigApplicationContext(AppConfig.class);' 이 클래스는 ApplicationContext의 구현체이다. 스프링 컨테이너 생성 과정 1. 스프링 컨테이너 생성 1)new AnnotationConfigApplicationContext(AppConfig.class); 2..
스프링 사용하여 AppConfig 변경 package com.example.core; import com.example.core.discount.DiscountPolicy; import com.example.core.discount.RateDiscountPolicy; import com.example.core.member.MemberRepository; import com.example.core.member.MemberService; import com.example.core.member.MemberServiceImpl; import com.example.core.member.MemoryMemberRepository; import com.example.core.order.OrderService; impo..
IoC, DI 그리고 컨테이너 제어의 역전 IoC(Inversion of Control) AppConfig 설계 이후 , 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 프로그램의 제어 흐름은 이제 AppConfig가 가져간다. - 구현체(OrderServiceImpl)은 필요한 인터페이스들을 호출하지만 어떤 구현 객체들이 실행될지 모른다. 프로그램의 제어의 흐름에 대한 권한은 모두 AppConfig가 가지고 있다. 심지어 구현체(OrderServiceImpl)도 AppConfig가 생성한다. 이렇듯, 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 한다. 프레임워크 vs 라이브러리 프리엠워크 : 내가 작성한 코드를 제어하고, 대신 실행하는 것 ex..
관심사의 분리 - DIP, OCP 원칙 지키기 위해 AppConfig 클래스 - 구현 객체를 생성하고 연결을 책임지는 별도의 설정 클래스 import com.example.core.discount.FixDiscountPolicy; import com.example.core.member.MemberService; import com.example.core.member.MemberServiceImpl; import com.example.core.member.MemoryMemberRepository; import com.example.core.order.OrderService; import com.example.core.order.OrderServiceImpl; public class AppConfig { p..
새로운 할인 정책 개발 public class FixDiscountPolicy implements DiscountPolicy { private int discountFixAmount = 1000; @Override public int discount(Member member, int price) { if (member.getGrade() == Grade.VIP) { return discountFixAmount; } else return 0; } } 원래 할인 정책에서 새로운 할인 정책 하나를 추가했습니다. public class RateDiscountPolicy implements DiscountPolicy{ private int discountPercent =10; @Override public int..