- 의존성 주입이란?
객체가 의존하는 다른 객체를 외부에서 주입하는 디자인을 말한다. Spring 프레임워크에서의 의존성 주입은 IoC 컨테이너와 Bean을 통해 이루어진다. 컨테이너가 Bean 객체의 생명 주기와 의존성을 관리해주는 덕분에, 개발자는 객체의 로직 구현에 집중할 수 있고 변경에 유연하게 대응할 수 있다.
- 의존성 주입 방식
의존성을 주입하는 방식은 크게 생성자 주입, Setter 주입, 필드 주입으로 나뉜다.
@Controller
public class MyController {
private final MyService myService;
@Autowired
public MyController(MyService myService) {
this.myService = myService;
}
}
//////////////////////////////////////////////
@Controller
@RequiredArgsConstructor
public class MyController {
private final MyService myService;
}
- 생성자 주입은 객체 생성 시점에 의존성을 주입하는 방식이다. final 키워드를 사용할 수 있어 불변성을 보장받을 수 있다. 생성자가 1개인 경우에는 @Autowired 어노테이션을 생략할 수 있고, @RequiredArgsConstructor 어노테이션으로써 코드를 더욱 간결하게 요약할 수도 있다. 가장 많이 사용되는 방식이다.
@Controller
public class MyController {
private MyService myService;
@Autowired
public void setMyService(MyService myService) {
this.myService = myService;
}
}
- Setter 주입은 말그대로 Setter 메서드를 통해 의존성을 주입하는 방식이다. 의존 관계의 변동에 대응할 수 있어 유연성이 높다. 다만 생성 시점 이후에 주입되므로 final 키워드는 사용할 수 없다.
@Controller
public class MyController {
@Autowired
private MyService myService;
}
- 필드 주입은 @Autowired 어노테이션을 통해 의존성을 주입하는 방식이다. 코드가 간결하지만 프레임워크 없이는 주입할 방법이 없으므로 단위 테스트에 어려움이 있다. 또한 Setter 주입과 마찬가지로 객체의 불변성을 보장받지 못한다.
'언어 > Java' 카테고리의 다른 글
대소문자를 서로 변환하는 방법 (Java) (0) | 2024.12.19 |
---|---|
대소문자를 판별하는 방법 (Java) (0) | 2024.12.19 |
문자열을 순회하는 방법 (Java) (0) | 2024.12.16 |
Java Stream의 개념 (1) | 2024.11.29 |
댓글