본문 바로가기
반응형

스프링41

스프링 핵심 원리 - (9) 의존관계 자동 주입 다양한 의존관계 주입 방법 생성자 주입 생성자가 1개만 있으면 @Autowired 생략가능 생성자를 통해 의존관계를 주입 특징 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다. 불변/필수 의존관계에 사용 수정자 주입(setter) 수정자 메서드(setter)를 통해 의존관계를 주입 옵션처리를 통해 주입할 대상 없어도 동작가능 특징 선택/변경 가능성이 있는 의존관계에 사용 필드 주입 (비추) 필드에 바로 주입 특징 코드가 간결. 단, 외부에서 변경이 불가능해서 테스트 힘들다. (스프링 없이 단위 테스트 불가능) DI 프레임워크가 없으면 아무것도 못한다. 설정 목적인 @Configuration 같은 곳, 테스트코드에서만 사용 일반 메서드 주입 생서자가 아닌 일반 메서드를 통해 주입 특.. 2022. 8. 9.
스프링 핵심 원리 - (8) 싱글톤 컨테이너 웹 어플리케이션과 싱글톤 스프링은 엔터프라이즈 환경을 위해 탄생 보통 웹 어플리케이션 여러 요청이 인입 순수한 DI 컨테이너 public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); //1. 조회: 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); //2. 조회: 호출할 때 마다 객체를 생성 MemberService memberService2 = appConfig.memberService(); //참조값이 다른 것을 확인 Syste.. 2022. 8. 5.
스프링 핵심 원리 - (7) 스프링으로 전환 @Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(getMemberRepository()); } ​ @Bean public MemberRepository getMemberRepository() { return new MemoryMemberRepository(); } ​ @Bean public OrderService orderService() { return new OrderServiceImpl(getMemberRepository(), discountPolicy()); } ​ @Bean public DiscountPolicy discoun.. 2022. 8. 5.
스프링 핵심 원리 - (6) SOLID SRP 단일 책임 원칙 클라이언트는 실행하는 책임만 AppConifg가 구현하고 연결하는 책임 DIP 의존 관계 역전 원칙 클라이언트가 인터페이스 + 구현체를 의존하는 것이 아닌, 인터페이스만 의존 구현체가 없어 실행이 불가능 (NPE) AppConifg를 생성하여 클라이언트에 구현체 의존성을 주입 OCP 개방 폐쇄 원칙 AppConfig의 구현체만 갈아끼면 동작 변경 가능(서비스 로직 변경X) 새로운 구현체가 생성(확장)되어도 사용 영역의 소스는 변경되지 않는다. IoC, DI, 컨테이너 IoC (제어의 역전) 기존에선 클라이언트가 구현체까지 의존하여 실행했다. AppConfig이후엔 클라이언트는 로직만 실행하게 됐다. 프로그램의 제어 흐름은 AppConfig가 관리 이처럼 프로그램의 제어 .. 2022. 8. 4.
728x90
반응형