Coding 공부/Java
[Java_Springboot] @Autowired
CBJH
2024. 5. 23. 13:57
728x90
반응형
안녕하세요! 오늘은 @Autowired 어노테이션과 의존성 주입에 대해 설명해 드릴게요. 이 내용은 백엔드 개발에서 중요한 개념이므로 꼭 이해하고 넘어가세요. 블로그에 올릴 수 있도록 요약된 글과 풀어서 설명하는 글을 모두 제공해 드릴게요.
요약된 글
@Autowired 어노테이션은 스프링 프레임워크에서 의존성 주입(Dependency Injection)을 위해 사용됩니다. 이 어노테이션을 사용하면 스프링 컨테이너가 자동으로 빈을 주입해줍니다. 주입 방식에는 필드 주입, 생성자 주입, 세터 주입이 있습니다. 각각의 방식은 아래와 같습니다:
- 필드 주입: 필드에 직접 주입
- 생성자 주입: 생성자를 통해 주입
- 세터 주입: 세터 메서드를 통해 주입
풀어서 설명하는 글
1. 의존성 주입(Dependency Injection) 개념
의존성 주입은 객체 간의 의존 관계를 스프링 프레임워크가 자동으로 설정해주는 것을 의미합니다. 이를 통해 코드의 결합도를 낮추고, 유지보수성을 높일 수 있습니다.
2. @Autowired 어노테이션
@Autowired 어노테이션은 스프링에서 빈(Bean)을 자동으로 주입하기 위해 사용됩니다. 이 어노테이션을 사용하면 개발자가 수동으로 객체를 생성하지 않아도 됩니다.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class MyService {
@Autowired
private MyRepository myRepository;
public void doSomething() {
myRepository.performAction();
}
}
위의 예제에서 MyRepository 객체는 @Autowired 어노테이션을 통해 자동으로 주입됩니다.
3. 주입 방식
- 필드 주입: 가장 간단한 방식으로, 필드에 직접 주입합니다.
- 생성자 주입: 생성자를 통해 주입합니다. 스프링 4.3 이후로는 생성자가 하나만 있을 경우 @Autowired를 생략할 수 있습니다.
@Component
public class MyService {
private final MyRepository myRepository;
@Autowired
public MyService(MyRepository myRepository) {
this.myRepository = myRepository;
}
public void doSomething() {
myRepository.performAction();
}
}
- 세터 주입: 세터(set) 메서드를 통해 주입합니다.
@Component
public class MyService {
private MyRepository myRepository;
@Autowired
public void setMyRepository(MyRepository myRepository) {
this.myRepository = myRepository;
}
public void doSomething() {
myRepository.performAction();
}
}
결론
@Autowired 어노테이션을 사용하면 스프링 컨테이너가 자동으로 의존성을 주입해주어 코드의 결합도를 낮추고 유지보수가 쉬워집니다. 필드 주입, 생성자 주입, 세터 주입 중 상황에 맞는 방식을 선택하여 사용하세요.
이상으로 @Autowired 어노테이션과 의존성 주입에 대한 설명을 마치겠습니다. 이해가 잘 되셨길 바라며, 질문이 있으면 언제든지 물어보세요!