@Autowired : 스프링의 의존성 주입 ✨

SoHEeeeeee·2023년 7월 11일

@Autowired이란?

@Autowired는 스프링 프레임워크가 의존성 주입(Dependency Injection, DI)을 자동으로 처리하도록 돕는 어노테이션이다.

의존성 주입이란,
객체가 필요한 다른 객체를 직접 만들지 않고도 사용할 수 있도록
외부에서 객체를 연결해주는 방식이다.

쉽게 말해, 스프링이 필요한 부품을 알아서 조립해주는 것과 같다.
이 덕분에 코드가 더 유연해지고, 확장성이 높아지며, 테스트하기 쉬워진다.


@Autowired 사용법

@Autowired 어노테이션을 필드, 생성자, 또는 메서드에 붙이면, 스프링 컨테이너가 해당 타입의 객체를 찾아 자동으로 연결해준다.

예를 들어, OrderService 클래스가 OrderRepository와 PaymentService라는 두 가지 '부품'을 필요로 할 때, @Autowired를 사용하면 스프링이 이 부품들을 직접 찾아 연결해준다.

예시 코드:

@Service
public class OrderService {
    
    private OrderRepository orderRepository;

    private PaymentService paymentService;

    @Autowired
    public OrderService(OrderRepository orderRepository, PaymentService paymentService) {
        this.orderRepository = orderRepository;
        this.paymentService = paymentService;
    }
    
    public void placeOrder(Order order) {
        // 주문 저장
        orderRepository.save(order);
        
        // 결제 처리
        paymentService.processPayment(order.getTotalAmount());
        
        // 배송 처리 등 추가 작업 수행
        // ...
    }
}

위 코드처럼 생성자에 @Autowired를 붙이면,
스프링이 OrderService를 만들 때 OrderRepository와 PaymentService를 자동으로 주입해준다.
그러면 OrderService는 이 부품들을 사용해 주문 저장, 결제 처리 같은 작업을 수행할 수 있다.

주의할 점:
@Autowired가 제대로 작동하려면 주입받으려는 객체들(OrderRepository, PaymentService 등)이 @Service, @Repository 같은 어노테이션을 통해 스프링 빈으로 등록되어 있어야 한다.

이렇게 @Autowired를 사용하면 객체 간의 의존성이 낮아져 더 깔끔하고 관리하기 쉬운 코드를 작성할 수 있다.

profile
주니어 개발자

0개의 댓글