ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • spring 의존성 주입(DI)
    Spring Framework 2023. 8. 11. 21:00

    DI (의존성 주입)

    • 의존성 : 한 클래스가 변경되면 다른 클래스에 영향을 미치는 것
    • 주입 대상이 여러개일 때, 우선 순위별로 먼저 찾는다.
      • 타입(1순위)
      • @Qualifier(2순위)
      • @Primary(3순위)
      • 이름(4순위)

     

    의존성 주입 패턴 (3가지가 존재한다.)

    1. 생성자 주입
      • 1순위
      • 객체의 최초 생성 시점에 의존성을 1회만 주입해준다. final을 사용할 수 있어서 불변을 보장해준다. (추천 방법)
      • final이 있어 NullPointException을 방지할 수 있다.
        • 완전한 생성자라는 가정하에, new 키워드로 객체를 생성해줄 경우 NullPointException이 발생될 수 있지만, 생성자 주입은 방지할 수 있다.
        • 객체 생성시점에 의존성 주입을 하니까 NullPointException을 방지
    2. 필드 주입
      • 2순위
      • 의존성을 주입하거나 직접 접근할때 의존성이 프레임워크에 종속되기 때문에 안되는 경우가 존재해서 추천하지 않음
    3. setter 주입
      • 3순위
      • bean생성자 또는 bean 정적 팩토리 메소드가 필요하기 때문에 final 선언이 안되어 의존성의 불변을 보장할 수 없다.

    * 예시

    @Controller
    public class BoardController {
    	
    	// 1. 필드 주입(2순위) : 추천하지 않음
        	@Autowired
    	private BoardService boardService;
    	
    	// 2. setter 주입(3순위)
    	private BoardService boardService;
    	@Autowired
    	public void setBoardService(BoardService boardService) {
    		this.boardService = boardService;
    	}
    	
    	// 3. 생성자 주입(1순위)
    	private final BoardService boardService;
    	public BoardController(BoardService boardService) {
    		this.boardService = boardService;
    	}
    }
Designed by Tistory.