Spring Boot

[Spring Boot]@Builder ์• ๋„ˆํ…Œ์ด์…˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž, ์˜ˆ์‹œ

์šฐ์ฃผ๋ฌผ๊ณ ๊ธฐ 2025. 5. 3. 14:48
๋ฐ˜์‘ํ˜•
@Builder ์• ๋„ˆํ…Œ์ด์…˜

@Builder ์• ๋„ˆํ…Œ์ด์…˜์€ ๋กฌ๋ณต์—์„œ ์ง€์›ํ•˜๋Š” ์• ๋„ˆํ…Œ์ด์…˜์ž„.

ํ•œ๋งˆ๋””๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์คŒ

โ€‹

์ƒ์„ฑ์ž ์œ„์— ๋ถ™์ด๊ฒŒ ๋˜๋ฉด, ๋นŒ๋” ํŒจํ„ด ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ์–ด์„œ ํŽธํ•จ.

โ€‹

์˜ˆ๋ฅผ๋“ค์–ด

๋นŒ๋” ํŒจํ„ด ์•ˆ์“ฐ๊ณ  ๋งŒ๋“ค๋ฉด

new Article("title1", "abc");

์ด๋ ‡๊ฒŒ ๋จ.

โ€‹

โ€‹

๊ทผ๋ฐ ๋นŒ๋” ํŒจํ„ด ์“ฐ๊ฒŒ๋˜๋ฉด

 

Article.builder()
.title("title1")
.content("abc")
.build();

์ด๋ ‡๊ฒŒ ๋จ!

โ€‹

โ€‹

๋นŒ๋” ํŒจํ„ด ์•ˆ์“ฐ๋ฉด abc๊ฐ€ ์–ด๋Аํ•„๋“œ์— ๋“ค์–ด๊ฐ€๋Š”๊ฐ’์ธ์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์ข€ ์–ด๋ ค์›€.

 


์—ฌ๊ธฐ์„œ ๋‚ด๊ฐ€ ์ข€ ํ—ท๊ฐˆ๋ ธ๋˜๊ฒŒ, @Builder์˜ ์—ญํ• ์ด ์ƒ์„ฑ์ž์ฒ˜๋Ÿผ ๋ณด์ด๋Š”๋ฐ

@AllArgsConstructor๋‚˜ @NoArgsConstuctor์ฒ˜๋Ÿผ ํด๋ž˜์Šค ์œ„์— ์•ˆ๋ถ™๊ณ 

ํ•„๋“œ๋กœ ๋”ฐ๋กœ ๋บ๋Š”์ง€?

โ€‹

์ผ๋‹จ @Builder๋Š” ์ƒ์„ฑ์ž๋ฅผ ์ง์ ‘ ๋งŒ๋“œ๋Š”๊ฑด XXX

๋นŒ๋” ํŒจํ„ด์— ๋งž์ถฐ์„œ ๊ฐ์ฒด ๋งŒ๋“œ๋Š” ๋ฉ”์†Œ๋“œ!!!๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ž„.

โ€‹

@AllArgsConstructor๋‚˜ @NoArgsConstuctor๋Š” ์ƒ์„ฑ์ž ์ž์ฒด๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š”์• ๊ณ 

@Builder๋Š” ๋ฉ”์†Œ๋“œ ๋งŒ๋“œ๋Š” ์• ๋ผ์„œ ๋‹ค๋ฅด๋‹ค!!!!!!

โ€‹

์ƒ์„ฑ์ž๋Š” ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์• ๊ณ 

๊ฐ์ฒด ์ƒ์„ฑ ์ž์ฒด๋Š” new ์—ฐ์‚ฐ์ž๊ฐ€ ํ•จ.

โ€‹

โ€‹

์˜ˆ๋ฅผ ๋“ค์–ด

User user = new User("email@test.com", "1234");

์ด ๊ฒฝ์šฐ์—๋Š” new ์—ฐ์‚ฐ์ž ๋•Œ๋ฌธ์— Heap ๋ฉ”๋ชจ๋ฆฌ์— ๊ณต๊ฐ„์„ ํ™•๋ณดํ•จ. (์‹ค์ œ ์ƒ์„ฑ์„ ์˜๋ฏธ)

โ€‹

๊ทธ๋ฆฌ๊ณ  User("email...)๋กœ ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ -> ํ•„๋“œ ์ดˆ๊ธฐํ™”ํ•จ

โ€‹

๊ทธ๋ฆฌ๊ณ  user๋ณ€์ˆ˜์— ์ฃผ์†Œ๊ฐ’ ๋ฐ˜ํ™˜ํ•ด์„œ ์—ฐ๊ฒฐํ•˜๋Š”๊ฑฐ..

โ€‹

โ€‹

โ€‹

+

new ๋ž‘ ์ƒ์„ฑ์ž์จ์„œ ๊ฐ์ฒด ์ƒ์„ฑํ•˜๋Š”๊ฑฐ๋ž‘

Builder ํŒจํ„ด ์“ฐ๋Š”๊ฒŒ ํ—ท๊ฐˆ๋ ค์„œ ์ง€ํ”ผํ‹ฐํ•œํ…Œ ๋ฌผ์–ด๋ด„

 

 

 

User user = User.builder()    // UserBuilder ๊ฐ์ฒด ์ƒ์„ฑ
    .email("email@test.com")
    .password("1234")
    .build();   // ์ฐ user ๊ฐ์ฒด ์ƒ์„ฑ

์ด๋Ÿฐ ์ฝ”๋“œ๊ฐ€ ์žˆ๋”ฐ๊ณ  ํ•  ๋•Œ,

โ€‹

.build() ๋ฉ”์†Œ๋“œ ์“ฐ๊ฒŒ ๋˜๋ฉด ๋นŒ๋” ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋จ

โ€‹

-> ๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ ๊ถ๊ธˆํ•œ๊ฒŒ, ๋‚œ ๋นŒ๋” ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ User๊ฐ์ฒด ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š”๋ฐ???

โ€‹

--> ํ•ด๋‹ต์€,

โ€‹

.builder()๊ฐ€ ๋ฆฌํ„ดํ•˜๋Š”๊ฑด Builder ๊ฐ์ฒด์ž„.

builder ๊ฐ์ฒด = User๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋„๊ตฌ!! ์ •๋„๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ ๋“ฏ

โ€‹

์ฐ User๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š”๊ฑด

.build() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ๋ ๋•Œ์ž„.

 

 

๋ฐ˜์‘ํ˜•