[Spring] Bean Life Cycle
·
Spring
빈 생명주기 콜백 시작 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 스프링 빈은 간단하게 객체 생성 -> 의존관계 주입 이러한 라이프 사이클을 가진다. 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 또한 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다. 스프링 빈의 이벤트 라이플 사이클 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 ->소멸전 콜백 -> 스프링 종료 스프링은 3가지 방법으로 빈 생명주기 콜백을 지원한다...
[Spring] @Autowired 필드 명 , @Qualifier, @Primary
·
Spring
조회되는 대상 빈이 2개 이상일 경우 해결법 Autowired 필드명 매칭 @Qualifier @Primary @Autowired 필드명 매칭: Autowired는 기본적으로 타입 매칭을 하는데 2개 이상인 경우 구체클래스의 필드명, 파라미터 명으로 빈 이름을 매칭한다. @Autowired private DiscountPolicy rateDiscountPolicy // rateDiscountPolicy라는 구체화 클래스 이름 @Qualifier : 추가 구분자를 붙여주는 방법이다. 빈 등록시 @Qualifier를 붙여주고 원하는 이름을 붙여준다. 주입시에 변수 앞에 @Qualifier를 붙여 해당 빈을 호출한다. @Component @Qualifier("mainDiscountPolicy") public ..
[Spring] Lombok 라이브러리
·
Spring
Lombok라이브러리 애노테이션으로 setter, getter, 생성자 주입코드까지 자동으로 만들어주는 라이브러리. @RequiredArgsConstructor를 사용하여 final 키워드가 붙은 변수의 생성자를 자동으로 만들어줌 정리 : 최근에 생성자를 딱 1개 두고 @Autowired를 생략하는 방법을 주로 사용한다. 여기에 Lombok라이브러리의 @ RequiredArgsConstructor 함께사용하는 전체적으로 깔끔하게 코드를 짤 수 있음
[Spring] 옵션 처리
·
Spring
옵션처리 required = false : 주입할 스프링 빈이 없어도 동작해야 할 때가 있는데, @Autowired의 default값은 required가 true이다. 따라서 자동주입 대상이 없으면 오류가 발생한다. @Nullable : 자동 주입대상이 없다면, null을 넣게끔 할 수 있는 옵션이 있다. Optional : 자동 주입대상이 없다면, Optional.empty가 입력된다.
[Spring] 다양한 주입방법
·
Spring
생성자 주입 생성자를 통해서 의존 관계를 주입 받는 방법 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다. 불변, 필수 의존 관계 생성자가 1개라면@Autowired 생략이 가능하다. 수정자 주입 setter라 불리는 필드의 값을 변경하는 수정자 메서드를 통해서 의존관계를 주입하는 방법이다. 선택, 변경 가능성이 있는 의존관계에 사용 @Autowired( required = false )로 지정하면 주입할 대상이 없어도 오류가 발생하지 않고 동작가능하다. 필드주입 필드에 바로 주입하는 방법 코드가 간결해서 많은 개발자들을 유혹하지만 외부에서 변경이 불가능해서 테스트하기 힘듬 DI프레임워크가 없으면 아무것도 할 수 없다. 실제 애플리케이션에서는 사용하지 않는게 좋다. -> 테스트코드에서 간결하게 사용하..
[Spring] 컴포넌트스캔
·
Spring
@ComponentScan의 핵심적인 기능 스프링 빈을 등록할 때 자바코드@Bean 혹은 xml을 통해서 설정 정보에 수동으로 직접 등록하였다. 예제로 확인해보는 것들은 몇개 되지 않아 금방 등록한다고 하지만, 실제로 수백 수천개를 등록해야한다면.. 이 문제를 해결하기 위하여 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. @ComponentScan을 활용하면, 해당 클래스 내용에 귀찮게 일일이 @Bean으로 수동으로 스프링 빈을 등록해야하는 번거로움을 덜 수 있다. 일단 가장 먼저 상단에 싱글톤유지를 위한 @Configuration이 있고, 아래@ComponentScan을 사용하였다. class내부에 어떠한 내용을 사용하지 않아도 자동으로 스프링 빈에 등..