-
spring 의존성 주입(DI)Spring Framework 2023. 8. 11. 21:00
DI (의존성 주입)
- 의존성 : 한 클래스가 변경되면 다른 클래스에 영향을 미치는 것
- 주입 대상이 여러개일 때, 우선 순위별로 먼저 찾는다.
- 타입(1순위)
- @Qualifier(2순위)
- @Primary(3순위)
- 이름(4순위)
의존성 주입 패턴 (3가지가 존재한다.)
- 생성자 주입
- 1순위
- 객체의 최초 생성 시점에 의존성을 1회만 주입해준다. final을 사용할 수 있어서 불변을 보장해준다. (추천 방법)
- final이 있어 NullPointException을 방지할 수 있다.
- 완전한 생성자라는 가정하에, new 키워드로 객체를 생성해줄 경우 NullPointException이 발생될 수 있지만, 생성자 주입은 방지할 수 있다.
- 객체 생성시점에 의존성 주입을 하니까 NullPointException을 방지
- 필드 주입
- 2순위
- 의존성을 주입하거나 직접 접근할때 의존성이 프레임워크에 종속되기 때문에 안되는 경우가 존재해서 추천하지 않음
- 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; } }'Spring Framework' 카테고리의 다른 글
Spring bean 정리(1)_bean 등록 (0) 2023.08.13 spring MVC & servlet 정리 (0) 2023.08.13 spring 제어의 역전 (Ioc) (0) 2023.08.11 json 파라미터 xss필터 처리 (request, response) (0) 2023.08.11 DAO & DTO & Entity 비교 (POJO, BO 간단한 설명) (0) 2023.08.11