· 의존성 (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 |