스프링 부트에서 의존성 주입은 객체 간의 연결을 자동으로 설정해주는 방식이에요. 예를 들어, A
클래스가 B
클래스의 기능을 사용해야 한다고 해볼게요. 보통은 A
클래스 안에서 B
를 직접 생성해서 사용하겠지만, 의존성 주입을 사용하면 A
는 B
를 직접 만들지 않아도 돼요. 스프링이 A
에 필요한 B
객체를 자동으로 넣어주기 때문이죠.
이렇게 하면 코드가 더 깔끔해지고, 변경이 쉬워져요. 예를 들어 B
의 구현을 다른 클래스로 바꿔야 할 때, A
를 수정할 필요 없이 스프링 설정만 바꾸면 돼요.
Spring Boot에서 **의존성 주입(Dependency Injection)**은 클래스가 필요한 객체를 외부에서 자동으로 주입해 주는 기능입니다. 이를 통해 개발자는 코드에서 객체 생성과 초기화를 명시적으로 하지 않고도 원하는 객체를 사용할 수 있어 코드가 더 깔끔해지고 유연성이 높아집니다.
간단히 말해, 의존성 주입은 클래스가 필요한 객체를 직접 생성하지 않고, 외부에서 주입받는 방식입니다. 예를 들어, UserService
라는 클래스가 UserRepository
라는 객체를 필요로 할 때, UserService
가 직접 UserRepository
객체를 생성하지 않고 Spring이 대신 생성해 주입해 줍니다.
Spring Boot에서는 주로 @Autowired 어노테이션을 사용하여 의존성을 주입합니다. 주입 방법은 크게 필드 주입, 생성자 주입, 세터 주입이 있습니다.
필드에 직접 주입하는 방식으로, @Autowired
어노테이션을 필드에 붙여주면 됩니다.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public void doSomething() {
userRepository.save();
}
}
생성자를 통해 객체를 주입받는 방식입니다. @Autowired
를 생성자에 붙이거나, 최신 Spring에서는 생략해도 자동으로 주입됩니다.
import org.springframework.stereotype.Service;
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) { // 생성자를 통해 주입
this.userRepository = userRepository;
}
public void doSomething() {
userRepository.save();
}
}