티스토리 뷰

자바/스프링

@Autowired 자동주입

tioon 2023. 6. 26. 21:32
@Autowired란?

-스프링에서 자동으로 의존성을 주입하기 위해사용되는 어노테이션입니다. 생성자, 필드, 메서드 주입 3가지 방법으로 주입을 할 수 있습니다.

 

 

  • 생성자 주입
@Component
public class MyComponent {

    private MyDependency myDependency;

    @Autowired
    public MyComponent(MyDependency myDependency) {
        this.myDependency = myDependency;
    }
    
    // ...
}
  • 메서드 주입
@Component
public class MyComponent {

    private MyDependency myDependency;

    @Autowired
    public void setMyDependency(MyDependency myDependency) {
        this.myDependency = myDependency;
    }
    
    // ...
}
  • 필드 주입
@Component
public class MyComponent {

    @Autowired
    private MyDependency myDependency;
    
    // ...
}

 

 

@Autowired의 동작 과정

  1. @Autowired 
    -애노테이션을 사용하여  해당 코드에 자동주입을 해야된다는 표시를 합니다. 해당 애노테이션을 보고 빈 자동주입을 시작합니다. 이때 자동주입을 받아와야하는 타입과 이름을 확인합니다.

  2. 빈 검색
    -스프링 컨테이너로 가서 해당 빈 이름이 있는지 확인합니다.

  3. 타입 확인
    -일치하는 빈 이름이 있다면 같은 타입이 있는지 확인합니다. 만약 없다면 여기서 바로 빈 자동 주입을 실행하고, 같은 타입이 있다면 @Qualifier로 넘어갑니다.

  4. @Qualifier
    -타입이 같은 빈이 여러개가 있다면 어느걸 주입해야할지 @Qualifier를 확인하여 일치하는 빈을 자동주입합니다.

 

@Autowired 옵션

 

required
-의존성 주입시 해당 빈이 반드시 필요한지 여부를 지정하는 옵션입니다. 기본적으로 true로 설정되어 있으며,
true일 시에는 해당 타입의 빈을 찾지 못하면 예외가 발생하고,
false일때는 빈을 찾지 못하면 예외를 발생시키지않고  주입을 생략합니다.

@Autowired(required = true)
@Autowired(required = false)

primary
-의존성 주입시 빈에 중복이 있을시 만약 하나의 빈에 @Primary 표시가 되어있다면 해당 빈을 우선적으로 가지고 옵니다.

'자바 > 스프링' 카테고리의 다른 글

스프링 컨트롤러 Mapping  (0) 2023.06.29
빈 라이프사이클 및 스코프  (0) 2023.06.27
빈(Bean) 등록 심화  (0) 2023.06.26
컴포넌트 스캔  (0) 2023.06.26
WAS(Web Application Server) , DispatcherServlet  (0) 2023.06.24
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함