[Spring] IOC / DI (1)

민픽minpic·2024년 4월 16일
0

Spring Framework

목록 보기
2/5

앞서 spring의 특징을 간단히 살펴보았고, 첫번째로 DI를 먼저 정리하고자 한다.
spring framework 는 결국 개발자가 더 편리하게 개발을 하고자 생겨난 어플리케이션이다.

그리고 DI는 개발자가 직접 모든 것을 책임지지 않고, 비지니스 로직에만 더 집중할 수 있도록 하는 것이다.

그렇다면 어떻게 의존성을 주입할 수 있을까?

DI 의존성 주입

의존성을 주입 할수 있는 방법은 크게 3가지이다.

1. 생성자를 이용한 주입
2. 필드를 이용한 주입
3. 메소드를 이용한 주입(setter) 

기본적으로 생성자를 이용한 주입이 가장 많이 사용된다.
그리고 이 주입들은 Spring container가 제공하는 기능들이다.

Bean

spring을 배울 때에는 다양한 용어가 나오는데, 이 시점에서 나오는 용어는 Bean이다.

의존성을 주입한 대상을 Bean이라고 부른다.
스프링이 직접 그 생성과 제어를 담당하는 오브젝트를 뜻한다.

BeanFactory

그리고 이 Bean을 등록, 생성, 조회, 반환하는 기능을 담당하는 것을 BeanFactory 라고 부르며, 일반적으로 보통 BeanFactory 를 사용하지 않고, ApplicationContext 를 이용한다.

ApplicationContext

BeanFactory를 확장한 IOC 컨테이너이다.
Bean을 등록하고 관리하는 기본적인 기능은 BeanFactory와 동일하다.
하지만 스프링이 제공하는 각종 부가 서비스를 추가로 제공한다.

그래서 BeanFactory라고 부를때에는 빈의 생성과 제어의 관점이라면,
ApplicationContext 라고 할때에는 스프링이 제공하는 어플리케이션 지원 기능을 포함해서 이야기하는 것이다.

Bean 생성

Bean의 기본 생성 범위는 'Singleton'이다.
만약에 범위를 변경하고 싶으면 scope를 지정해주어야 한다.

  • singleton : 스프링 컨테이너당 하나의 인스턴스 빈만 생성
  • prototype : 빈 요청시마다, 새로운 인스턴스 생성
  • request : HTTP request 별로 새로운 인스턴스 생성
  • session : HTTP Session 별로 새로운 인스턴스 생성

스프링 빈 설정하는 메타 정보는 3가지 방법으로 표현할 수 있다.

  1. XML 파일 이용
  2. Annotation
  3. Java Code 이용

1번만 이용하거나
1번과 2번을 같이 이용 또는
2번과 3번 같이 이용하여 표현할 수 있다.

개인적으로 2번과 3번을 이용해서 표현하는 것이 제일 간단한 것 같다.

profile
사진찍는 개발자 / 한 가지 개념이라도 깊이있게

0개의 댓글