본문 바로가기
Spring

스프링 빈과 의존성 주입

by 코린이엄현종 2024. 3. 21.

· 의존성 (Dependency)

- 하나의 모듈 (클래스, 패키지 등)이 다른 모듈을 사용하는 것

 

객체의 활용과 의존성

· 일반적으로 다른 객체의 기능을 사용하기 위해서는 멤버 변수에 new로 객체를 생성하여 참조

· 생성한 객체의 메소드를 호출

· 어떤 객체를 생성하여 사용할 것인지 코드 상에 명시

- compile-time 의존성이 생성 됨

 

의존성 주입 (DI, Dependency Injection)

· 객체 생성을 외부에서 대신 수행

· 활용할 객체에 대한 의존성(참조) 설정을 외부에서 대신 해줌

· 활용할 클래스(인터페이스)타입의 멤버 변수만 선언 후 생성자 구현

- new 키워드로 객체 생성 직접 하지 않음

 

그럼 PostController 객체는 누가 생성하는 것일까?

Spring Framework가 객체의 생성과 관리 역할을 수행

· Spring Framework가 특정 조건을 만나면 객체를 생성

- 클래스 상단의 Annotation(@Controller, @RestController, @Service 등)

- @Configuration 클래스의 @Bean Annotation

- XML 설정

 

· 객체로 생성할 대상을 검색하는 과정 -> Component Scan

· 조건에 따라 객체들의 의존성을 관리

 

 

Spring IoC 컨테이너와 Spring Bean

· Spring IoC 컨테이너

- Spring Framework에서 객체의 생성과 관리의 역할을 하는 컴포넌트

 

· Spring Bean

- Spring IoC 컨테이너에 의해서 생성되어 관리되는 Java 객체

 

의존성 주입을 위한 단계

1. Spring에 의해 객체가 생성 되게끔 Annotation 설정

2. 사용할 객체를 멤버 변수와 생성자에 추가

3. 객체를 사용한다

 

 

@Configuration 과 @Bean Annotation

· Java 클래스에 @Configuration Annotation을 사용 가능

- 해당 클래스는 Spring Framework에 의해 설정 정보를 위한 클래스로 활용됨

 

· @Configuration 클래스 내에 @Bean을 사용한 메소드로 Bean 생성 가능

- Bean으로 등록할 객체를 생성 후 Return

'Spring' 카테고리의 다른 글

스프링 빈과 의존성 주입 실습  (0) 2024.03.21
Spring Service 실습  (0) 2024.03.21
Spring Service  (0) 2024.03.21
REST API 문서의 활용  (0) 2024.03.20
HTTP Method RequestBody 실습  (0) 2024.03.20