공부/Spring

스프링 IoC , DI

Dr.thousand 2022. 3. 3. 10:27
728x90

스프링 IoC ( Inversion Of Control) : 제어의 역전

제어의 역전 ? 

보통은 개발자가 원하는 객체를 생성하고 제어하는 스타일로 개발을 하는데 , 개발자가 호출하는것이 아니라 프레임워크 같은것이 호출해주는것 . 

기존 프로그램은 클라이언트의 구현객체가 스스로 필요한 구현객체를 생성하고 사용하는 구조였다.

한마디로 구현객체가 프로그램의 제어흐름을 조절했다.

필요로 하는 객체를 직접 생성해서 사용

 

제어의 역전이 사용된 경우

생성자를 통해 필요로하는 객체를 주입받음
각 인터페이스의 구현채들을 설정
인터페이스는 어떤 구현체가 오든 상관하지 않고 로직을 실행할 수 있게된다

AppConfig가 등장후 구현객체는 자신의 로직을 실행하는 역활만 가지고 있다. 프로그램 제어흐름을 AppConfig가 가져가게 된다. 

스프링 IoC ?

스프링은 스프링 프레임워크에서 위의 제어의 역전을 관리해준다.

어노테이션 컨피그 빈설정

@Bean 어노테이션으로 빈을 등록해주면 스프링 컨테이너에 해당 빈이 등록되게 된다. 기본적으로 메소드이름으로 빈이 등록됨.

빈이 등록됬는지 조회 테스트
테스트 결과

위의 코드에서 AnnotationConfigAppApplicationContext 객체를 생성하여 AppConfig class를 설정파일로 하였더니 AppConfig에 있는 Bean들이 컨테이너에 등록되었다.

 

스프링 DI (Dependency Injection) : 의존관계 주입

회원 서비스는 회원저장소를 주입받아야 사용이 가능하다

 

 

AnnotationConfigApplicationContext를 생성하여 빈들을 관리하고 , MemberService 빈을 받고있다
memberService 빈은 아래 memberRepository빈의 의존성을 주입받고있다

 

728x90
반응형

'공부 > Spring' 카테고리의 다른 글

[QueryDSL] QueuryDSL vs JPQL  (0) 2023.12.18
[스프링] AuditorAware  (1) 2023.11.22
[스프링]Spring Security - SecurityFilterChain  (0) 2023.11.22
[Spring] ControllerAdvice  (0) 2022.09.27
BeanFatory와 ApplicationContext  (0) 2022.03.06