(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 1) 인터페이스(InitializingBean, DisposableBean) 2) 설정 정보에 초기화 메서드, 종료 메서드 지정 3) @PostConstruct, @PreDestroy 애노테이션 지원 2. 인터페이스 InitializingBean, DisposableBean 1. NetworkClient 코드 수정 NetworkClient가 InitializingBean 과 DisposableBean 인터페이스를 implements 하도록 코드를 수정한다. package hello.core.lifecycle; import org.springframework.beans.factory.DisposableBean; import org...
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 1. 08. 빈 생명주기 콜백 - 빈 생명주기 콜백 시작 데이터베이스 커넥션 풀, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화, 종료 작업이 필요하다. 스프링을 통해 초기화 작업과 종료 작업을 어떻게 진행하는지에 대해 알아보자. 1. NetworkClient 예제 코드(테스트 하위에 생성) 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정한다. 실제로 네트워크에 연결하는 것은 아니고, 단순히 문자만 출력한다. NetworkClient 는 애플리케이션 시작 지점에 connect() 를 호출해서 연결을 맺어두고,..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 9. 자동, 수동의 올바른 실무 운영 기준 1) 컴포넌트 스캔을 통한 자동 빈 등록과 의존 관계 자동 주입 2) 설정 정보를 통한 수동 빈 등록과 의존 관계 수동 주입 각 방식을 어떠한 경우에 사용해야할지 알아보자. 1. 편리한 자동 기능을 기본으로 사용하자 스프링은 @Component 뿐 아니라 @Controller, @Service, @Repository 처럼 계층에 맞추어 일반적인 애플리케이션 로직을 자동으로 스캔할 수 있도록 지원한다. 최근 스프링 부트는 컴포넌트 스캔을 기본으로 사용하고 스프링 부트의 다양한 스프링 빈들도 조건이 맞으면 자동 등록하도록 설계했다. 설정 정보를 기반으로 애플리케이션을 구성하는 부분과 실제 동..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 7. 애노테이션 직접 만들기 실무에서도 종종 애노테이션을 직접 만들어 사용한다. 저번 시간 @Qualifier 방식을 적용한 아래 코드를 보면, @Qualifier()안에 문자는 컴파일시 타입 체크가 안된다는 문제가 있다. 이러한 경우, 애노테이션을 만들어 다음과 같은 문제를 해결할 수 있다. @Component @Qualifier("mainDiscountPolicy")// () 안에 문자는 컴파일시 타입 체크X public class RateDiscountPolicy implements DiscountPolicy{...} 1. @MainDiscountPolicy 애노테이션 만들기 @Qualifier 애노테이션에 붙어있는 애노테이..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 5. 조회 빈이 2개 이상(문제) 1. @Autowired @Autowired는 타입(Type)으로 조회해 의존관계를 주입해준다. // ac.getBean(DiscountPolicy.class) @Autowired private DiscountPolicy discountPolicy DiscountPolicy 타입으로 스프링 빈을 조회해 주석한 코드와 유사하게 동작한다. (실제로는 더 많은 기능 제공) 2. 조회 빈이 2개 이상일 때 문제 예시 코드 작성 스프링 빈 조회에서 학습했듯이 타입으로만 조회할 때, 선택된 빈이 2개 이상이면 문제가 발생한다. 해당 문제 상황을 만들기 위해 DiscountPolicy의 하위 타입인 FixDi..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 4. 롬복과 최신 트랜드 개발을 하면 대부분 불변이므로 필드에 final 키워드를 사용하게 된다. 생성자 주입 방식은 생성자도 만들어야하고 주입 받은 값을 대입하는 코드도 만들어야하는데, 필드 주입처럼 편하게 사용하기 위해 롬복 라이브러리를 사용한다. 1. 기본 코드 @Component public class OrderServiceImpl implements OrderService{ // 1. 필드에 final 키워드 사용 private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; // 2. 생성자 만들기 @Autowire..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 2. 옵션 처리 @Autowired를 사용했지만 주입할 스프링 빈이 없어도 동작해야할 때가 있다. 자동 주입할 대상이 없을 때, @Autowired만 사용하면 오류가 발생한다. (기본적으로 required=true이기 떄문에) package hello.core.autowired; public class AutowiredTest { @Test void AutoWiredOption() { // TestBean 스프링 빈 등록 ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class); } static class TestBean { // 자동으로 주입할 ..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 1. 다양한 의존관계 주입 방법 1) 생성자 주입 -> 가장 많이 사용 2) 수정자 주입(setter 주입) 3) 필드 주입 4) 일반 메서드 주입 1. 생성자 주입 생성자를 통해서 의존 관계를 주입받는 방법이다. (지금까지 우리가 진행했던 방법) 1) 특징 - 생성자 호출 시점에 딱 1번만 호출되는 것이 보장된다. - 불변, 필수 의존관계에 사용 2) 생성자 주입 코드 작성 package hello.core.order; @Component public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; pri..