[Spring] ๋กฌ๋ณต(Lombok) ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๐๋กฌ๋ณต(Lombok)์ด๋?
๋กฌ๋ณต(Lombok)์
Java ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ๋ฐ๋ณต์ ์ด๊ณ ๋ฒ๊ฑฐ๋ก์ด ์ฝ๋๋ฅผ ์ค์ฌ์ฃผ๋ ๊ฐํธํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๋กฌ๋ณต์ ํด๋์ค์ ํน์ ์ ๋ ธํ ์ด์ ์ ์ถ๊ฐํจ์ผ๋ก์จ, ์ฝ๋์์ ์์ฃผ ์ฌ์ฉ๋๋ ๋ฉ์๋(๊ฒํฐ(Getter), ์ธํฐ(Setter), equals(), hashCode(), toString() ๋ฑ)๋ฅผ ์๋์ผ๋ก ์์ฑํด ์ค๋๋ค.
์ฆ ์ฝ๋ฉ ๊ณผ์ ์์๋ ๋กฌ๋ณต๊ณผ ๊ด๋ จ๋ ์ด๋ ธํ ์ด์ ๋ง ๋ณด์ด๊ณ getter์ setter ๋ฉ์๋ ๋ฑ์ ๋ณด์ด์ง ์์ง๋ง ์ค์ ๋ก ์ปดํ์ผ๋ ๊ฒฐ๊ณผ๋ฌผ(.class)์๋ ์ฝ๋๊ฐ ์์ฑ๋์ด ์๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋ฐ๋ณต์ ์ผ๋ก ์์ฑํด์ผ ํ๋ ์ฝ๋๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ Lombok์ ์ฌ๋ฌ๊ฐ์ง ์ด๋
ธํ
์ด์
์ ์ ๊ณตํ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฝ๋๋ฅผ ์ปดํ์ผ๊ณผ์ ์์ ์์ฑํด ์ฃผ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค.
๐์ด๊ธฐ ์ค์ (๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ)
pom.xml ์ ์ถ๊ฐ
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
๐์ด๋ ธํ ์ด์ ์ข ๋ฅ
@Getter
๋ณ์์ ๊ฐ์ ๋ฐ์๊ฐ ์ ์๋ ๋ฉ์๋ ์์ฑ
@Setter
๋ณ์์ ๊ฐ์ ์ค์ ํ ์ ์๋ ๋ฉ์๋ ์์ฑ
@ToString
๋ณ์์ ๊ฐ์ ์ถ๋ ฅํ๋ ๋ฉ์๋ ์์ฑ
@NoArgsConstructor
๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์ ์์ฑ
@AllArgsConstructor
๋งค๊ฐ๋ณ์๋ก ๋ชจ๋ ๋ณ์์ ๊ฐ์ ์ฑ์ ํ๋ ์์ฑ์ ์์ฑ
@Data
์์ ๋ชจ๋ ์ด๋ ธํ ์ด์ (Getter, Setter, ToString, NoArgsConstructor)์ ํ๋ฒ์ ์ ์ฉํ ์ ์๋ ์ด๋ ธํ ์ด์
@Builder
๋น๋ ๋์์ธ ํจํด์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๊ฒ ํด์ฃผ๋ ์ด๋ ธํ ์ด์
๋ณต์กํ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๋น๋ ํจํด์ ์๋์ผ๋ก ์์ฑํด ์ค๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ ์ฑ์ด ๋๊ณ ์ ์ฐํ ๊ฐ์ฒด ์์ฑ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
* @Data๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์ :
1. ํ์ํ ๊ฒ๋ง ๋ง๋ ๋ค๋ ์์น์ ์งํค๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ๋ฐํด์ผ ํจ
2. ๋ถ๋ณํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋๋ฐ ๋ถ๋ฆฌํจ (๋ชจ๋ ํ๋์ ๋ํ Setter๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์)
-> ์ด๋ฌํ ๋ฌธ์ ์ ์ ์ผ๋ถ ํ๋์ ๋ํด์๋ง @Setter๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์