‡๐Ÿ‘ฉ‍๐Ÿ’ป ‡/ºSpring

[Spring] ๋กฌ๋ณต(Lombok) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Trudy | ์†ก์—ฐ 2023. 12. 20. 23:50

๐Ÿ“๋กฌ๋ณต(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๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ