본문 바로가기

카테고리 없음

[Spring] IoC

728x90

IoC(Inversion of Control)란 제어의 역전을 의미하며, 객체의 생성, 생명주기 관리 등을 개발자가 아닌 프레임워크 레벨에서 처리하는 것을 말합니다.

 

일반적인 자바 어플리케이션에서는 객체를 생성하고 사용하기 위해 개발자가 직접 new 연산자를 사용하여 객체를 생성합니다. 이 경우, 해당 객체는 개발자가 직접 관리하며, 다른 객체에 대한 의존성도 개발자가 직접 관리해야 합니다.

 

그러나 Spring과 같은 IoC 컨테이너에서는 객체 생성 및 생명주기 관리를 IoC 컨테이너가 대신 처리합니다. IoC 컨테이너는 미리 객체를 생성하고, 객체 간의 의존성을 주입하여 개발자가 생성과 의존성 관리를 할 필요 없이 객체를 사용할 수 있도록 합니다.

IoC 컨테이너는 주로 XML 파일, Java 어노테이션 등을 통해 객체의 라이프사이클을 설정하고, 객체 간의 의존성을 주입합니다. 이를 통해 코드의 유연성과 확장성을 높이며, 테스트 용이성도 향상시킬 수 있습니다.

 

Spring에서는 대표적으로 BeanFactory와 ApplicationContext를 제공하며, 이들을 이용하여 IoC 컨테이너를 구현할 수 있습니다. BeanFactory는 IoC 컨테이너의 가장 기본적인 기능을 제공하는 인터페이스이며, ApplicationContext는 BeanFactory를 상속받아 추가적인 기능을 제공합니다.

 

Spring Boot의 IoC 컨테이너는 Spring Framework의 ApplicationContext 인터페이스를 기반으로 하며, 기본적으로는 클래스패스에 위치한 @Component, @Service, @Repository, @Controller, @Configuration과 같은 어노테이션을 가진 클래스들을 자동으로 스캔하여 Bean으로 등록합니다.

 

또한, @Autowired, @Value와 같은 어노테이션을 이용하여 Bean 간의 의존성을 주입할 수 있으며, 자동 구성(Auto Configuration)을 통해 스프링 부트가 제공하는 Starter 패키지들을 사용하여 빠르게 애플리케이션을 개발할 수 있습니다

728x90