본문 바로가기

스프링54

Bean 객체의 생성과 소멸 스프링 컨테이너는 초기화와 종료라는 사이클을 갖는다. 이 과정에서 스프링 컨테이너 내부에 존재하는 Bean 객체 또한 컨테이너의 라이프 사이클에 따라 생성과 소멸을 진행한다. 객체 생성 → 의존 설정 → 초기화 → 소멸 스프링 컨테이너가 초기화 될 때 Bean 객체의 생성 및 의존 설정이 진행된다. 이 부분은 이전 chapter를 공부하면서 살펴볼 수 있었다. InitializingBean과 DisposableBean을 구현한다면 각각 Bean 객체가 초기화, 소멸될 때 지정된 메소드가 실행된다. 코드를 통해 확인해보자. public class MemberDao implements InitializingBean, DisposableBean { @Override public void afterPropert.. 2022. 11. 13.
@Component란? @Component Component scan은 스프링이 직접 클래스를 검색해서 빈으로 등록하는 기능이다. 클래스에 @Component를 붙이면 스캔의 대상이된다. @Component가 제공해주는 기능 다음의 코드들을 통해 학습을 진행해보자. @Component("zzz") public class MemberDao implements Dao { } MemberDao 상단에 @Component("zzz") 를 작성했다. AppCtx에는 @Component 가 붙은 클래스를 스캔하는 역할의 @ComponentScan을 붙여주었다. @Configuration @ComponentScan(basePackages = {"com.example.springtest.spring5_chapter5"}) public cla.. 2022. 11. 13.
@Qualifier 알아보기 @Qualifier 란? 자동 주입 가능한 빈이 두 개 이상일 때, 자동 주입할 빈을 지정할 수 있는 어노테이션이다. 예시 코드를 통해 @Qualifier를 사용해야 하는 상황을 확인해보자. 아래와 같이 MemberDao를 자동 주입 받는 MemberService가 존재한다. 그리고 MemberDao를 자동 주입 받을 수 있게 Bean으로 등록해주는 설정 파일은 다음과 같다. 이 상황에서 MemberDao 타입의 Bean을 하나 더 생성하면 어떻게 될까? 다음과 같이 설정 파일에 memberDao2를 추가했을 때, 자동 주입을 받는 쪽에서 다음과 같은 문제가 발생한다. 자동 주입 가능한 Bean이 두 개이상이므로 특정 Bean을 주입할 수가 없어서 발생하는 문제이다. 이 문제를 해결하려면 어떻게 해야할까.. 2022. 11. 8.
스프링 DI란? DI란? Dependency Injection, 즉 의존 주입이다. 의존 주입에 대해서 알아보기 전에 의존에 대해서 알아보자. 의존이란? A객체가 B객체의 메서드를 실행하는 경우 A객체는 B객체에게 의존한다고 표현한다. A객체가 B객체에게 메시지를 보내는 경우라고 생각하자. B객체가 변경될 때 A객체도 변경된다면 A객체가 B객체에게 의존하는 것이다. 의존 주입을 해야하는 이유? 의존하는 객체를 직접 생성한다면 변경에 유연하게 대처할 수 없다. 예시를 통해 확인해보자. public class Service { private Dao dao = new MemberDao(); } public class Service { private Dao dao = new UserDao(); } 위와 같이 Dao객체를 직접 .. 2022. 11. 6.