스프링 DI(Dependency Injection, 의존성 주입)
객체 간의 의존성을 관리하는 방법중 하나이다.
의존성 주입은 객체 생성과 동시에 해당 객체가 의존하고 있는 다른 객체를 주입하는 방식으로 이루어진다.
이를 통해 코드의 유연성과 재사용성을 높이고, 객체 간의 결합도를 낮추어 유지보수성을 향상시킬 수 있다.
스프링의 의존성 주입 방법 (이 외에도 다른 방법들이 많지만, 대표적인 것은 이 5가지 이다.)
- Setter Injection : 객체에 세터 메서드를 이용하여 의존하는 객체를 주입 (주입받는 객체가 변경될 가능성이 있는 경우에 사용)
- Constructor Injection : 객체의 생성자를 이용하여 의존하는 객체를 주입
(주입받은 객체가 변하지 않거나, 반드시 객체의 주입이 필요한 경우에 강제하기 위해 사용)
- Field Injection : 객체의 필드를 이용하여 의존하는 객체를 주입
- Method Injection : 일반적인 메서드를 이용하여 의존하는 객체를 주입
- @Autowired 어노테이션 : 스프링이 해당 필드나 메서드 파라미터의 타입을 기반으로 의존하는 객체를 자동으로 주입
(일반적으로 필드 주입 방식을 사용하며, 생성자 주입을 사용하려면 생성자에 어노테이션을 추가.)
의존성 주입은 객체 간의 결합도는 낮춰서 코드의 유지보수성을 높이는 장점이 있지만, 잘못 사용하면 코드의 가독성이 떨어지고, 객체 간의 의존성이 복잡해질 수 있습니다. 따라서 적절한 경우에 적절한 방법으로 의존성 주입을 사용해야 합니다.
- 출처 : 점프 투 스프링부트, ChatGPT