김영한님의 스프링 핵심 원리 강의 개인 정리입니다. SOLID 원칙은 객체지향 설계 5원칙 Single Responsibility Principle 한 클래스는 하나의 책임만 가져야한다. 클래스를 수정할 일이 생겼을 때 그 원인이되는 이유는 오직 한개여야 한다.
김영한님 스프링 핵심원리 강의 개인 정리입니다. 위 코드의 문제점은 할인 정책을 바꿀 때 마다 FixDiscountPolicy, RateDiscountPolicy 객체를 생성하는 코드를 고쳐야 한다. DiscountPolicy 인터페이스와 구현체인 FixDiscou
프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 말한다.OrderServiceImpl 클래스는 OrderService 인터페이스의 메서드를 호출하여 사용하지만, 메서드만 사용할 뿐 어떤 구현객체가 실행될지 모르는 상태로 만든다.이런 제어의 흐름
클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴.private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 한다.요청이 들어올 때 마다 객체를 생성하지 않고, 이미 만들어진 객체를 공유해서 효율적으로 사용할 수 있다.구현
컴포넌트 스캔을 사용하려면 먼저 @ComponentScan을 설정 정보에 붙여줘야 한다.컴포넌트 스캔을 사용하면 @Configuration이 붙은 설정 정보도 자동 등록된다.@Configuration 안에 @Component 어노테이션이 붙어있다.@ComponentSc
생성자 주입 : 객체 생성시 단 한번 초기화됨. 불변, 누락x, 테스트 용이.수정자 주입 : setter 메서드를 이용해서 주입. 값 수정 가능성이 있음.필드 주입 : @Autowired를 붙여서 자동 주입. 변경불리, 테스트 어려움.생성자 호출 시점에 딱 1번만 호출
스프링 빈은 객체 생성 -> 의존관계 주입 라이프사이클을 가진다.의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려준다.또한 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다.스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입
빈이 존재할 수 있는 범위를 뜻한다.싱글톤 : 기본 스코프. 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프.프로토타입 : 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프.웹 관련 스코프request : 웹 요청