필드 주입 (@Autowired)

yihyun·2024년 11월 18일

Spring Boot

목록 보기
33/33

필드 주입

필드 주입이란 특정한 빈 (객체)을 변수 (멤버필드)에 넣는다고 하여 필드 주입이라고 부른다.

필드 주입은 2.7.17 에서는 사용해도 괜찮지만 이전 버전에서는 특정 상황(숨환참조)에서 문제가 된다.

순환참조

🙋‍♀️ 순환참조 : 서로가 서로를 참조하고 있기 때문에 한 쪽에서 변화가 감지되면 무한으로 실행되는 현상

순환참조는 A 서비스와 B 서비스가 서로 호출할 때 발생한다.
그래서 Controller → Service → DAO 순으로 호출이 되도록 설계하면 순환참조를 막을 수 있다.
(A 가 B 를 부를 때 B 는 절대 A를 부르지 않도록 설계해야 한다.)


필드 주입은 순환참조를 프로그램이 실행되 봐야 알 수 있다. (미리 알지 못하고 실행해 봐야 알 수 있다. 다른 방법은 미리 알 수 있다(빨간줄))
그렇기 때문에 필드 주입 대신 생성자 주입을 권고하고 있다.

생성자 주입

	// final 로 움직이지 못하게 고정을 시켜둠 (생성자 외에는 초기화할 수 없음) / static이 붙으면 아예 못바꾸니까 상수
	private final BoardService board_service;
	
	// 생성자 만들기
	public BoardController(BoardService board_service) {
		this.board_service = board_service;
	}

profile
개발자가 되어보자

0개의 댓글