SeouliteLab

[Java/자바]Spring 프레임워크의 @Autowired이란? 본문

프로그래밍

[Java/자바]Spring 프레임워크의 @Autowired이란?

Seoulite Lab 2024. 3. 7. 08:51

Spring Framework에서 @Autowired는 자동 의존성 주입을 수행하는 데 사용되는 어노테이션입니다. 이 어노테이션을 사용하면 Spring이 필요로 하는 빈을 자동으로 찾아 해당 필드에 주입합니다.

1. @Autowired 사용법

@Autowired 어노테이션은 다양한 위치에서 사용할 수 있습니다. 필드, 생성자, Setter 메서드에 사용하여 의존성을 주입할 수 있습니다.

예제 1. 필드에 @Autowired 사용하기

// 사용되는 디렉토리: src/main/java/com/example/service
// 파일명: MyService.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MyService {

    @Autowired
    private MyRepository repository;

    // MyRepository 사용
}

예제 2. 생성자에 @Autowired 사용하기

// 사용되는 디렉토리: src/main/java/com/example/service
// 파일명: MyService.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MyService {

    private final MyRepository repository;

    @Autowired
    public MyService(MyRepository repository) {
        this.repository = repository;
    }

    // MyRepository 사용
}

예제 3. Setter 메서드에 @Autowired 사용하기

// 사용되는 디렉토리: src/main/java/com/example/service
// 파일명: MyService.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MyService {

    private MyRepository repository;

    @Autowired
    public void setRepository(MyRepository repository) {
        this.repository = repository;
    }

    // MyRepository 사용
}

2. @Autowired 사용 시 주의사항

의존성을 자동으로 주입할 때, Spring이 해당 타입의 빈을 찾지 못하면 예외가 발생할 수 있습니다. 이때는 @Autowired의 required 속성을 false로 설정하여 의존성 주입을 선택적으로 수행할 수 있습니다.

예제 4. required 속성 사용하기

// 사용되는 디렉토리: src/main/java/com/example/service
// 파일명: MyService.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MyService {

    @Autowired(required = false)
    private MyRepository repository;

    // MyRepository 사용 (repository가 null인 경우 처리)
}