롬복과 최신 트랜드
롬복과 최신 트랜드
@RequiredArgsConstructor
@RequiredArgsConstructor
롬복 라이브러리가 제공하는 @RequiredArgsConstructor 어노테이션을 사용하면 final이
붙은 필드를 못아서 생서자를 자동으로 만들어준다.
기존 코드
1
2
3
4
5
6
7
8
9
10
11
@RestController
@RequestMapping("/admin")
public class MainController {
private final UserService userServcie;
@Autowired
public MainController(UserService userServcie) {
this.userService = userSevice;
}
}
최신 트랜드 적용
1
2
3
4
5
6
7
8
@RestController
@RequiredArgsConstructor
@RequestMapping("/admin")
public class MainController {
private final UserService userService;
}
최근에는 생성자를 딱 1개 두고, @Autowired를 생략하는 방법을 주로 사용한다.
여기에 Lombok 라이브러리의 @RequiredArgsConstructor를 함께 사용하면 기능은
다 제공되면서, 코드는 깔끔하게 사용할 수 있다.
회고
요즘 회사에서 나는 @RequiredArgsConstructor를 애용한다. 우선 굉장히 간편하다.
이번에 다시 정리한 이유는 최근에 @Autowired를 사용할 일이 있었기 때문이다.
겸사 겸사 리마인드 겸 생성자 주입을 왜 써야한는지, 그리고 수정자 주입, 필드 주입을
왜 쓰면 안되는지 되 짚어봤다. 요약하자면 생성자 주입을 써야하는 이유는 다음과 같다.
✔︎ 의존관계는 어플리케이션이 시작부터 끝날 때 까지 변경 될 일이 없다.
✔︎ 따라서 최초 1회만 호출되는 생성자를 통해서 의존성을 주입해야 한다.
✔︎ 불변, 필수 의존관계에 사용한다.
✔︎ @Autowired는 DI프레임워크 관리하에서만 유의미하다.
✔︎ 따라서 필드 주입의 경우에는 순수한 자바 코드만으로 테스트하기 어렵다.
이 기사는 저작권자의
CC BY 4.0
라이센스를 따릅니다.