- DI, IoC
- IoC
- 제어의 역전(개발자 → 컴퓨터)
- 프레임워크 정의 : 프로그램 실행 제어권이 개발자에게 있냐, 컴퓨터에게 있냐.
- 컴퓨터에게 있으니까 스프링은 IoC
- DI
- Dependency Injection
- 의존성 주입
- new 를 스프링이 해준다.
- 스프링에서는 3가지 의존성 주입 방식을 지원함
- Field 주입
- Setter 주입
- Constructor 주입
- Field 주입
- Field 주입은 클래스의 Field 에 Autowired 어노테이션을 붙여서 주입하는 방식을 말함
@Controller
public class LogController
{
@Autowired
private LogService logService;
@Autowired
private RestTemplateUtils restTemplateUtils;
// ...
}
- Setter 주입
- Setter 주입은 클래스의 Setter 함수에 Autowired 어노테이션을 붙여서 주입하는 방식을 말함
@Controller
public class LogController
{
private LogService logService;
private RestTemplateUtils restTemplateUtils;
@Autowired
public void setLogService(LogService logService)
{
this.logService = logService;
}
@Autowired
public void setRestTemplateUtils(RestTemplateUtils restTemplateUtils)
{
this.restTemplateUtils = restTemplateUtils;
}
// ...
}
- 생성자 주입
@Controller
public class LogController
{
private final LogService logService;
private final RestTemplateUtils restTemplateUtils;
public LogController(**LogService logService**, **RestTemplateUtils restTemplateUtils**)
{
this.logService = logService;
this.restTemplateUtils = restTemplateUtils;
}
// ...
}