YeaLow
article thumbnail

๐Ÿ”lombok์ด๋ž€?

  • Java์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ฐ˜๋ณต๋˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•ด์„œ ์ž๋™์œผ๋กœ ์ž‘์„ฑํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • ๋ณดํ†ต DTO๋‚˜ Model, Entity์˜ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ์†์„ฑ์ด ์กด์žฌํ•˜๊ณ  ์ด๋“ค์ด ๊ฐ€์ง€๋Š” ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•ด Getter, Setter, ์ƒ์„ฑ์ž ๋“ฑ์„ ๋งค๋ฒˆ ์ž‘์„ฑํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์„ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿคlombok ์„ธํŒ…

 

๋งจ ์ฒ˜์Œ์— ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ lombok ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ๋‹ค.

์ด์ œ STS์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์น˜๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. pom.xml์„ ๋ณด๋ฉด dependency๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”๊ฐ€๋˜์–ด ์žˆ๋‹ค.

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

 

user ํด๋”์˜ .m2 -> repository ํด๋”๊ฐ€ ์˜์กด์„ฑ์ด ์ถ”๊ฐ€๋˜๋Š” ํด๋”์ธ๋ฐ

 

์—ฌ๊ธฐ์—์„œ ์œ„์— dependency์— ์„ ์–ธ๋˜์–ด ์žˆ๋Š” org.projectlombok ํด๋”๋ฅผ ๋“ค์–ด๊ฐ€ ๋ณด๋ฉด jarํŒŒ์ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

git bash ํ•ด์ฃผ๊ณ  ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ๋ฉด ๋กฌ๋ณต ์„ค์น˜ ์ฐฝ์ด ๋œฌ๋‹ค.

java -jar lombok-1.18.22.jar

 

์—ฌ๊ธฐ์—์„œ STS4๊ฐ€ ์„ค์น˜๋œ ๊ฒฝ๋กœ๋กœ ๋“ค์–ด๊ฐ€ STS4๋ฅผ ์ถ”๊ฐ€ํ•ด ์ค€ ๋’ค Install ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์„ค์น˜ ์™„๋ฃŒ!

 

๐Ÿคlombok ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

 

๊ธฐ์กด์— ๋งŒ๋“ค์—ˆ๋˜ Member.java ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด ์ค€๋‹ค.

์ด์ œ ๋กฌ๋ณต์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์„ ์–ธํ–ˆ๋˜ getter/setter๋ฅผ ์ง€์›Œ์ค˜๋„ ๋œ๋‹ค.

  • @Getter : ๊ฒŒํ„ฐ ๋งŒ๋“ค๊ธฐ
  • @Setter : ์„ธํ„ฐ ๋งŒ๋“ค๊ธฐ
  • @Data : ๊ฒŒํ„ฐ, ์„ธํ„ฐ ๋™์‹œ์— ๋งŒ๋“ค๊ธฐ
  • @AllArgsConstructor : ์ƒ์„ฑ์ž ๋งŒ๋“ค๊ธฐ
  • @RequiredArgsConstructor : final์ด ๋ถ™์€ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ƒ์„ฑ์ž ๋งŒ๋“ค๊ธฐ

 

final ์„ ์–ธ์€ ์•„์ง ํ•„์š”์—†๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์ด ์ˆ˜์ •ํ•ด ์ค€๋‹ค.

 

HttpController.java ํด๋ž˜์Šค๋กœ ์™€์„œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•˜๋ฉด ๋กฌ๋ณต ๋•๋ถ„์— ์ƒ์„ฑ์ž๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋นˆ ์ƒ์„ฑ์ž๋„ ์ƒ๊ฒผ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๊ฒŒํ„ฐ, ์„ธํ„ฐ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ 

 

๋งคํ•‘ํ•ด๋‘” ์ฃผ์†Œ๋กœ ์ด๋™ํ•˜๋ฉด ํ™”๋ฉด์ด ์ž˜ ๋œจ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ฝ˜์†”์ฐฝ์— getter/setter ๊ฐ’๋„ ์ž˜ ๋„˜์–ด์˜จ๋‹ค.

 

์ด๋ฒˆ์—” builder๋ฅผ ์‚ฌ์šฉํ•ด์„œ

 

์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค. ๊ธฐ์กด์—๋Š” ์ €๋ ‡๊ฒŒ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๊พธ๋ ค๋ฉด ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด ํ•„์š”ํ–ˆ์ง€๋งŒ @Builder ๋กฌ๋ณต ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋•๋ถ„์— ํ•ด๋‹น ๊ณผ์ •์„ ์ƒ๋žตํ•˜๊ณ  ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค.

 

๋‹ค์‹œ ์‹คํ–‰ํ•ด ๋ณด๋ฉด ์ฝ˜์†”์ฐฝ์— ๊ฐ’์ด ์ž˜ ๋„˜์–ด์˜จ๋‹ค. id๊ฐ’์„ ์ฃผ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— 0(์ˆซ์ž null์ผ ๋•Œ์—๋Š” 0)์œผ๋กœ ๋„˜์–ด์˜จ๋‹ค.

 
 
profile

YeaLow

@YeaLow

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!