1. 생성자 주입
@Controller
public class BoardController {
private final BoardService boardService;
// public BoardController(){
// }
public BoardController(BoardService boardService) {
this.boardService = boardService;
}
}
- 기본 생성자 없이 매개변수를 가진 생성자만 있을 경우, 스프링은 이 생성자를 통해
BoardService
빈을 주입하여 의존성을 설정한다.
- 기본 생성자가 있을 경우, 스프링은 기본 생성자를 사용하고, 매개변수 있는 생성자는 무시되므로 매개변수 생성자를 사용하려면 기본 생성자를 제거해야 한다.
BoardService
에final
을 붙여 의존성 주입을 보장하고, 의존성 주입 후 값 변경을 방지한다.
2. Lombok을 활용한 생성자 주입
@RequiredArgsConstructor
@Controller
public class BoardController {
private final BoardService boardService;
}
@RequiredArgsConstructor
어노테이션을 사용하면final
이 붙은 필드에 대한 생성자를 자동으로 생성해준다.
- 생성자를 자동으로 생성해주어 코드가 간결해지고, 의존성 주입을 쉽게 처리할 수 있다.
Share article