IoC (Inversion of Control) (제어의 역전) 란?
객체의 생성과 관리를 개발자가 하는 것이라 아니라 프레임워크가 대신하는 것
// 일반 코드
public class A {
b = new B(); // 개발자가 클래스를 직접 생성, 제어
}
// 제어의 역전
public class A {
private B b; // 코드에서 객체를 생성하지 않음, 어디선가 받아온 객체를 b에 할당
}
스프링은 제어의 역전을 중요한 컨셉으로 삼고 있으며, 객체를 생성하고 제어하는 주체를 스프링 컨테이너 라고 한다.
DI (Dependency Injection) (의존성 주입) 란?
외부에서 객체를 주입받아 사용하는 것
의존성 주입에 대해서는 이미 다룬적이 있다.
( 참고 : https://record47584.tistory.com/41 )
의존성 주입(Dependency Injection)과 조립자
의존성(Dependency)이란?어떤 객체가 자신의 기능을 수행하기 위해 필요로 하는 외부 요소 한 객체가 다른 객체를 사용할 때, 의존성이 있다고 한다. public class OrderService { private Rider rider = new Rider();
record47584.tistory.com
스프링에서 의존성 주입의 의미는 간단하다. 클래스에 대한 의존성을 스프링 컨테이너에서 주입받고 있다는 의미이다.
public class A {
@Autowired
B b; // B를 주입받음
}
스프링 컨테이너(Spring Container)란?
IoC에서 객체를 생성하고 관리하는 주체
스프링 컨테이너에서 관리하는 객체를 Bean이라고 한다.
- Bean이 생성되고 소멸하기까지의 생명주기를 관리
- 개발자가 @Autowired 같은 어노테이션을 사용해 Bean을 주입받을 수 있게 DI 지원
Bean이란?
빈은 스프링 컨테이너가 생성하고 관리하는 객체
- 클래스에 @Component 어노테이션을 붙이면 Bean으로 등록되어 스프링컨테이너에서 관리됨
- 클래스의 첫 글자를 소문자로 바꿔서 관리
- 기본적으로 싱글톤으로 관리
@Component
public class MyClass {
}
// -> myClass라는 이름으로 Bean으로 등록되어 관리됨'Spring > 관련 지식' 카테고리의 다른 글
| JPA에서 Enum 활용 방법 (ORDINAL vs STRING 등) (0) | 2026.07.21 |
|---|---|
| N+1 문제의 개념과 해결 방법 (0) | 2026.07.09 |
| 생성자를 구현했는데도 @NoArgsConstructor를 쓰는 이유 (0) | 2026.07.04 |
| Spring에서의 예외 처리 (+ 커스텀 에러 구현) (0) | 2026.07.02 |
| JPA(Java Persistence API)에 대한 간단한 정리 (0) | 2026.05.13 |