스프링 핵심 원리 - 기본편의 복습을 위한 글이며 이 글에 나오는 모든 소스코드의 저작권은 인프런의 김영한 강사님께 있습니다. 1. 다양한 의존관계 주입 방법 의존관계 주입은 크게 4가지 방법이 있다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메소드 주입 1.1 생성자 주입 생성자를 통해 의존관계를 주입받는 방식이다. 불편, 필수 의존관계에서 사용된다. 생성자가 딱 1개만 존재하는 경우 @Autowired를 생략해도 자동으로 주입된다. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPol..
스프링 핵심 원리 - 기본편의 복습을 위한 글이며 이 글에 나오는 모든 소스코드의 저작원은 인프런의 김영한 강사님께 있습니다. 1. 컴포넌트 스캔과 의존관계 자동 주입 시작하기 스프링 빈을 등록할 때 자바 코드의 @Bean이나 XML의 등을 통해 설정 정보에 직접 등록할 스프링 빈을 나열하였다. 그러나 이렇게 등록해야 할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기가 어렵고 설정 정보가 커지거나 누락하는 문제가 발생할 수 있다. 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 @ComponentScan이라는 기능을 제공하고, 의존관계를 자동 주입해주는@Autowired라는 기능도 제공한다. 코드로 살펴보자. AutoAppConfig @Configuration @ComponentScan( ..
스프링 핵심 원리 - 기본편의 복습을 위한 글이며 이 글에 나오는 모든 소스코드의 저작원은 인프런의 김영한 강사님께 있습니다. 1. 싱글톤 패턴 이전에 만들었던 스프링 없는 순수한 DI컨테이너인 AppConfig는 요청이 들어올 때 마다 객체를 새로 생성한다. 아래 코드로 확인해보자. SingletonTest public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); //1. 조회: 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); //2. 조회: ..
스프링 핵심 원리 - 기본편의 복습을 위한 글이며 이 글에 나오는 모든 소스코드의 저작원은 인프런의 김영한 강사님께 있습니다. 1. BeanFactory와 ApplicationContext BeanFactory와 ApplicationContext에 대해서 알아보겠다. 1.1 BeanFactory BeanFactory는 스프링 컨테이너의 최상위 인터페이스다. 스프링 빈을 관리하고 조회하는 역할을 담당한다. getBean()을 제공하며, 여태 사용하였던 대부분의 기능은 BeanFactory가 제공하는 기능이다. 1.2 ApplicationContext BeanFactory 기능을 모두 상속받아서 제공한다. 빈을 관리하고 검색하는 기능을 BeanFactory가 제공해주는데, 그러면 둘의 차이가 뭘까? 애플리케..
스프링 핵심 원리 - 기본편의 복습을 위한 글이며 이 글에 나오는 모든 소스코드의 저작원은 인프런의 김영한 강사님께 있습니다. 1. 스프링 컨테이너 1.1 스프링 컨테이너 생성 다음은 스프링 컨테이너가 생성되는 과정이다. // 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext : 스프링 컨테이너 ApplicationContext는 인터페이스이다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로도 만들 수 있다. 직전에 AppConfig를 사용했던 방식이 어노테이션 기반의 자바 설정 클래스..
스프링 핵심 원리 - 기본편의 복습을 위한 글이며 이 글의 모든 소스코드와 사진의 저작권은 김영한 강사님께 있습니다. 1. 좋은 객체 지향 설계 적용 이전 글 Spring #3. 객체 지향 원리 적용 - (1) 글에서는 SRP, DIP, OCP를 적용한다. 하나하나씩 살펴보겠다. 좋은 객체 지향 설계의 5가지 원칙(SOLID)는 여기를 클릭하면 더 자세히 알 수 있다. 1.1 SRP - 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 클라이언트는 객체는 직접 구현 객체를 생성하고, 연결하고, 실행하는다양한 책임이 있다. 따라서, SRP 단일 책임 원칙을 따르면서 관심사를 분리하는것이 중요하다. 앞의 Spring #3. 객체 지향 원리 적용 (1)의 글의 코드를 다시 살펴보면, 구현 객체를 생성하..