
Spring DI(Dependency Injection)는 Spring Framework의 핵심 기능 중 하나로, 객체 간의 의존성을 외부에서 주입하여 관리하는 디자인 패턴이다 이로 인해 코드 간 결합도가 낮아지고 모듈화와 테스트 용이성이 크게 향상된다.
@Autowired: 해당 필드, 생성자, 또는 메소드에 맞는 Bean을 컨테이너에서 찾아 주입한다.@Qualifier: 여러 Bean이 존재할 때, 특정 Bean을 지정하여 주입받을 수 있다.@Inject나 @Resource 같은 어노테이션도 사용 가능하다.생성자 주입 (Constructor Injection):
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
// Business methods using userRepository...
}
세터 주입 (Setter Injection):
@Service
public class UserService {
private UserRepository userRepository;
@Autowired
public void setUserRepository(UserRepository userRepository) {
this.userRepository = userRepository;
}
// Business methods using userRepository...
}
필드 주입 (Field Inection):
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
// Business methods using userRepository...
}