Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

1. 스프링 빈(Spring Bean) & IoC(Inversion of Control) 가 무엇인가? 본문

인프런 김영한님 강의/0. 수강중 Spring 추가 공부

1. 스프링 빈(Spring Bean) & IoC(Inversion of Control) 가 무엇인가?

이대곤 2022. 6. 27. 17:43

스프링 빈(Spring Bean)

Spring에 의해서 자동으로 필요한 곳에 사용되고, 관리되는 '객체'를 Spring Bean이라고 부른다.

더 정확히는 Spring IoC 컨테이너가 관리중인 객체들을 말한다.

 

그냥 new 클래스이름 해서 객체를 생성하면, 이 객체는 스프링에 의해 자동으로 관리되지 않는다.

특정 객체가 Spring IoC 컨테이너에 의해 자동으로 관리되도록 등록하기 위해서는 별도의 과정이 필요한데

여기에는 2가지 방법이 있다. 두 가지 방법 모두 알고 있어야 한다. 이건 맨 마지막에 알아보자.

 

그럼 왜 굳이 객체를 등록해서 Spring IoC 컨테이너가 관리하도록 하는 것일까?

 

특정 클래스의 생성자가 파라미터로 외부의 객체를 받아들이는 코드가 있고,

나는 이 최종 클래스의 객체를 생성해야 하는 상황이라고 가정하자.

 

스프링을 사용하지 않는다는 가정하에 그냥 자바 코드로 이것은 구현한다고 치면

static main 메서드를 작성하면서, 먼저 파라미터로 넘길 객체를 생성해서

이 객체를 다른 클래스 생성자의 파라미터로 넘겨주며 최종적으로 객체를 생성할 것이다.

 

반면, 객체를 Spring Bean화 해서 Spring IoC 컨테이너가 관리하도록 등록한다면

파라미터로 넘길 객체를 생성하는 코드도 대신처리해주며(생략되며)

파라미터로 받는 객체를 관리중인 객체들 중 적절한 것을 선택하여 생성자로 자동으로 넘겨주며

최종 클래스의 객체를 생성하는 것 까지도 완료해준다.

 

바로 이것 때문에 일반 객체를  Spring IoC 컨테이너가 관리할 수 있도록 등록하는 것이다.

 

* 객체가 Spring IoC 컨테이너에 의해 자동으로 관리되도록 등록하는 방법

방법1. 컴포넌트 스캔 이용하기

방법2. 자바 코드로 직접 스프링 빈 등록하기

제어의 역전(IoC, Inversion of Control)

한글로는 '제어의 역전' 이라고 불리는데, 이것이 뭔가?

자동으로 처리해주는 부분이 있는 소프트웨어 디자인 방식을 말한다.

 

왜 이런 이름이 붙여졌나?

원래는 흐름 제어의 주체가 하나부터 열까지 코딩하는 개발자에게 한정되어 있었는데

어떤 주체가 이를 일부 위임받아 해주기 때문에 붙여진 이름 같다.

Comments