\-> 좋은 객체 지향 어플레케이션을 개발할 수 있게 도와주는 프레임워크라는 점역할 : 인터페이스구현 : 인터페이스를 구현한 클래스를 인스턴스한 객체장점 역할과 구현으로 구분하면, 유연해지며 변경도 편리해짐클라이언트는 대상의 역할(인터페이스)만 알면된다클라이언트는 구
메모리 회원 저장소 : 로컬에서 킬때 확인하는 용도 (서버 껐다키면 사라짐) DB 회원 저장소 : 직접 데이터를 넣어서 회원 저장하는 용도 회원 서비스 : MemberServiceImpl 회원 저장소 : 두가지의 구현체로 나누어짐 (MemoryMemberReposit
✅ 할인 정책 변경기존에 사용하고 있던 FixDiscountPolicy 인터페이스가 아닌 RateDiscountPolicy 로 바꾸려고 함고정 금액 할인이 아니라 좀 더 합리적인 주문 금액당 할인하는 정률 % 할인으로 변경해보자. 예를 들어서 기존 정책은 VIP가 10
ApplicationContext 로 인터페이스 이다XML 기반 또는 애노테이션 기반의 자바 설정 클래스로 만들 수 있다스프링 컨테이너 생성스프링 빈 등록빈 이름을 직접 부여할 수 있지만, 항상 다른 이름을 부여하자!@Bean(name="memberService2)스프
✅ 스프링 없는 순수한 DI 컨테이너 테스트 위 코드는 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때 마다 객체를 새로 생성한다. 고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸된다 -> 메모리 낭비가 심하다. 해결방안은
스프링 빈을 등록할 때 자바코드의 @Bean 이나 XML의 `` 으로 직접 스프링 빈을 등록하였다 하지만 이러한 것들이 쌓이면 귀찮고, 누락 시키는 경우가 발생한다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 이라는 기능을 제
데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료작업이 필요함 ✅ 스프링 빈의 라이프 사이클객체 생성 -> 의존관계 주입스프링 빈은
총 4가지가 존재 Autowired 로 생성자 주입, setter주입, 필드 주입, 일반 메서드 주입 ✅ 생성자 주입 생성자 호출 시점에 딱 1번만 호출되는 것이 보장 불변, 필수 관계에서 사용 불변 : 어플리케이션 종료 전까지 변하면 안됨 💡 정리 setter
빈 스코프 : 빈이 존재할 수 있는 범위 스프링 빈은 기본적으로 -> 싱글톤 스코프 로 생성해 줌 ✅ 스프링의 스코프들 싱글톤 스코프 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 스코프 : 스프링 컨테이너는 프로토