Coding 공부/Java

[Java_Springboot] @Autowired

CBJH 2024. 5. 23. 13:57
728x90
반응형

안녕하세요! 오늘은 @Autowired 어노테이션과 의존성 주입에 대해 설명해 드릴게요. 이 내용은 백엔드 개발에서 중요한 개념이므로 꼭 이해하고 넘어가세요. 블로그에 올릴 수 있도록 요약된 글과 풀어서 설명하는 글을 모두 제공해 드릴게요.

요약된 글

@Autowired 어노테이션은 스프링 프레임워크에서 의존성 주입(Dependency Injection)을 위해 사용됩니다. 이 어노테이션을 사용하면 스프링 컨테이너가 자동으로 빈을 주입해줍니다. 주입 방식에는 필드 주입, 생성자 주입, 세터 주입이 있습니다. 각각의 방식은 아래와 같습니다:

  1. 필드 주입: 필드에 직접 주입
  2. 생성자 주입: 생성자를 통해 주입
  3. 세터 주입: 세터 메서드를 통해 주입

풀어서 설명하는 글

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 어노테이션과 의존성 주입에 대한 설명을 마치겠습니다. 이해가 잘 되셨길 바라며, 질문이 있으면 언제든지 물어보세요!