본문 바로가기
개발자 공부 - 인프런 온라인 강의/스프링 핵심 원리 - 기본편

[섹션 7. 의존관계 자동 주입] 롬복과 최신 트랜드 / 인프런 김영한 스프링 핵심 원리 기본편

by easpop 2023. 6. 18.
728x90
반응형

이번 시간에는 롬복과 최신 트렌드에 대해서 알아보았다.

사실 회사에서도 롬복을 쓰는데.... 역할을 뭔지 모르고 회사에 있는 매뉴얼 대로 롬복만 설치해서 썼었는데...ㅋㅋㅋㅋ

이번 강의를 통해서 알게됐으니 잘됐다!ㅋㅋㅋㅋ

 

의존관계 주입을 자동으로 해줄 때, 생성자 주입이 다 좋지만 코드가 많다는 단점이 있다.

그래서 롬복이라는 라이브러리를 사용하는 방법이 있다.

 

막상 개발을 해보면 대부분 다 불변이고, 그래서 생성자에 final 키워드를 사용하게 된다.

그러려면 생성자도 만들어야 하고, 주입받은 값을 필드에 대입하는 코드도 만들어야 하고 (ex. this. memberRepository = memberRepository)

많이 번거로움... 필드 주입처럼 편리하게 사용하는 방법은 없을까?

 

자바에 getter, setter 메소드로 임의로 만들어주는 lombok이라는 라이브러리가 있다.

설치는 start.spring.io 에서 프로젝트 생성할 때, dependencies에서 롬복을 선택할 수도 있지만,

gradle에서 추가하는 방법으로 해보자.

 

간단하다.

build.gradle에서 저렇게 configurations와 dependencies만 추가해주면 된다.

 

라이브러리가 추가된 모습!

 

그리고 plugins에서 롬복을 설치해주면 된다던데, 나도 몰랐는데 이미 깔려있었다.

그리고 추가적인 세팅으로 Annotation Processors를 enable 해주면 된다.

그렇게 하면 인텔리제이에서 롬복을 쓸 수 있다.

 

그리고 테스트를 위해서 클래스를 만들어준다.

 

Getter, Setter를 쓸 수 있게 된 것을 확인할 수 있고, setName으로 값을 세팅하고 getName으로 불러오는 테스트 코드를 작성한다. 거기다가 toString 까지 콘솔에 찍어본다

 

Getter와 ToString이 정상적으로 잘 불러온다!

 

예전같으면 이렇게 길게 코드를 썼어야 했는데, 롬복을 쓰면 @Getter, @Setter 어노테이션만으로도

getter와 setter를 쓸 수 있다.

반응형

그리고 RequiredArgsConstructor를 사용하게 되면,

 

이 생성자 코드를 그대로 만들어준다!

 

RequiredArgumentsConstructor, 즉, final이 붙은 필수값에 대해서 생성자를 만들어준다.

 

위의 그림에서 빨간색 박스친 부분이, 아래의 RequiredArgumentsConstructor로 대체된다!

 

Ctrl + F12를 눌러서 생성자를 확인해도 보이는 것을 알 수 있다.

이렇게 되면 필드값을 추가할 때, 생성자 코드를 수정할 필요 없이 필드값만 추가하면 자동적으로 생성자 코드가 생긴다.

 

롬복의 작동 원리는, 롬복이 자바의 애노테이션 프로세서라는 기능을 이용해서 컴파일 시점에 생성자 코드를 자동으로 생성해준다.

 

최근에는 생성자를 하나만 두고 Autowired 를 생략하는 방법을 주로 사용한다.

여기에 롬복 라이브러리의 @RequiredArgsConstructor 를 함께 사용하면 모든 기능은 다 제공하면서,

코드를 깔끔하게 사용할 수 있다.

728x90
반응형

댓글