본문 바로가기
Backend - Java Spring/Spring Core

[SpringCore 핵심원리] IoC, DI, Container

by VictorMeredith 2024. 2. 17.

1. IoC(제어의 역전)

- 프로그램흐름의 제어를 구현객체가 아닌 외부에서 담당한다.

- AppConfig에서 @Configuration 애너테이션 밑에 @Bean 애너테이션을 달면 스프링Bean으로 등록이 가능하다.

- 아래처럼 ApplicationContext를 이용하면 스프링컨테이너에 빈으로 등록이 가능하다

 

- ApplicationContext 는 스프링컨테이너다. (인터페이스다)

- 스프링컨테이너는 @Configuration이 붙은 애를 설정(구성) 정보로 사용한다. @Bean이라 적인 메서드를 모두 호출해서 반환된 객체를 스프링컨테이너에 스프링빈으로 등록한다.

- @Bean 이름이 붙은 메서드의 이름을 사용한다(변경 가능하긴함)

- applicationContext.getBean()으로 스프링빈을 찾을 수 있다.

 

2. 스프링컨테이너와 스프링 빈

- 스프링컨테이너는 XML 기반이나 애너테이션 기반의 자바설정 클래스로 만들 수 있다.

- 스프링컨테이너는 스프링빈을 생성한다. (Key:Value)

- 스프링컨테이너는 설정 정보를 참고해서 의존관계를 주입한다. (DI)

- 스프링컨테이너에 실제 스프링빈이 잘 등록되었는지 Test코드를 만들어보장

출력이 잘 되었다

 

- ROLE 분기를 통해 내가 등록한 애들만 출력도 가능하다.

 

- ac.getBean(빈이름 타입); : 빈 조회

- ac.getBean(타입); : 빈 조회

3. 스프링 빈 조회 - 상속관계

- 부모타입으로 조회하면 자식타입도 함께 조회된다.

- 'Object' 타입으로 조회하면 모든 스프링 빈을 조회한다.

- BeanFactory : 스프링컨테이너의 최상위 인터페이스

- ApplicationContext : BeanFactory를 상속받은 스프링컨테이너이며, 환경설정, 이벤트, 패턴 등 수 많은 부가기능을 제공해준다.

 ex) 메시지소스를 활용한 국제화 기능, 환경변수(로컬환경/개발환경/운영환경), 애플리케이션 이벤트, 리소스 조회 등

 

댓글