IOC( Inversion Of Control) 제어의 역전
소프트웨어 설계 원칙 중 하나로 프로그래밍에 있어 객체의 생성 및 관리 책임을 개발자에서
전체 애플리케이션 또는 프레임워크에 위임하는 디자인 원칙
프레임워크를 쓰면 프레임워크의 틀안에서 개발자가 짜둔 어플리케이션 코드를 호출하게 된다.
제어하는 역할을 프레임워크가 가지게 된다. 이를 제어의 역전이라고 함
IOC 구현 방법
- Factory Pattern
- Template Method Pattern
- Service Locator Pattern
- Depedency Injection(DI)
IOC 장점
- 코드의 유연성과 재사용성 증가
- 테스트 용이
- 결합도가 낮아져 유지보수 용이
IOC 단점
- 코드의 가독성 떨어짐, 몰이해 발생
- 초기설정과, 성능 이슈 발생가능
DI(Dependency Injection) 의존성 주입
IOC 구현 방법 중 하나
객체 생성 및 관리에 대한 책임을 ioc 컨테이너가 가지며, 필요한 객체를 직접 생성하거나, 외부에서 주입 받는 방식
-> 생성자 주입, 속성 주입, 메소드 주입 방식
생성자 주입 (가장 권장 되는 방식!)
@Autowired를 통해 사용 가능
생성자를 1개만 두고, @Autowired 생략 가능
public class Injection {
private InjectionService injectionService;
// 생성자 DI
// @Autowired -> Spring4.3부터는 @Autowired 생략 가능
public Injection(InjectionService injectionService) {
this.injectionService = injectionService;
}
}
@RequiredArgsConstructor 를 함께 사용하면 생성자를 생략 가능 하여 코드 생략가능
@RequiredArgsConstructor
public class Injection{
//private 설정!!!
private InjectionService injectionService
}
해당 글 참조
https://backendcode.tistory.com/249
'web 개발 > spring' 카테고리의 다른 글
<spring> AOP(Aspect-Oriented Programming) (0) | 2024.05.25 |
---|---|
<Spring> 프로젝트 배포하기 (0) | 2024.05.20 |
<spring> spring framework 계층 (controller, service, repository) (0) | 2024.05.18 |
<spring> @Controller vs @RestController 차이 (0) | 2024.05.15 |
<spring> DTO (0) | 2024.05.15 |