반응형
제어의 역전 (IoC, Inversion of Control)
제어의 역전은 기존의 프로그램 개발 방식에서 개발자가 객체의 생명주기와 의존성을 직접 다루던 것을 프레임워크 또는 컨테이너에게 위임하는 개념
스프링에서 IoC는 객체의 생성, 생명주기의 관리, 의존성 주입 등을 스프링 컨테이너가 담당
IoC 컨테이너
IoC 컨테이너는 제어의 역전을 실제로 구현하는 역할
스프링에서는 ApplicationContext 인터페이스가 IoC 컨테이너를 나타낸다.
ApplicationContext는 빈의 생성, 관리, 소멸과 같은 작업을 처리한다.
빈 (Bean)
빈은 IoC 컨테이너가 관리하는 객체
스프링에서는 빈으로 등록된 객체는 스프링 컨테이너에 의해 생성되고, 관리되며, 필요한 곳에 주입된다..
빈은 일반적으로 POJO(Plain Old Java Object)로 작성되며, 스프링에서는 어노테이션 또는 XML 설정을 통해 빈으로 등록된다.
IoC 컨테이너와 빈의 장점
- 유연성과 확장성
- IoC 컨테이너를 사용하면 객체의 생성과 의존성 주입을 독립적으로 관리할 수 있어 애플리케이션의 유연성과 확장성이 향상된다.
- 테스트 용이성
- 빈을 사용하면 테스트하기 쉬운 코드를 작성할 수 있다.
- 의존성 주입을 통해 모의 객체(Mock Object)를 주입하거나, 특정 빈을 다른 빈으로 간단하게 교체할 수 있다.
- 코드 재사용성
- 빈을 사용하면 여러 부분에서 동일한 객체 인스턴스를 공유할 수 있다.
- 메모리 사용을 효율적으로 관리하고, 객체 간의 일관성을 유지하는 데 도움이 된다.
스프링에서의 빈 등록과 사용
XML을 이용한 빈 등록
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="myBean" class="cohttp://m.example.MyBean" />
</beans>
어노테이션을 이용한 빈 등록
@Component
public class MyBean {
// 클래스 내용 생략
}
마무리
스프링의 IoC 컨테이너와 빈은 애플리케이션의 구조를 유연하게 만들어주고,
유지보수 및 테스트를 용이하게 해주는 핵심적인 기능이다.
실제로 사용해 보면서 더 많은 기능과 장점을 발견할 수 있을 것 같다.
반응형
'TIL(Today I Learned)' 카테고리의 다른 글
| [TIL ]Entity (1) | 2023.11.14 |
|---|---|
| [TIL] JPA(Java Persistence API) (0) | 2023.11.13 |
| [TIL] 제어의 역전 (Inversion of Control, IoC)와 의존성 주입 (Dependency Injection, DI) (1) | 2023.11.09 |
| [TIL] 3 Layer Architecture (0) | 2023.11.08 |
| [TIL] 데이터 베이스 (0) | 2023.11.07 |