์Šคํ”„๋ง 4

[์Šคํ”„๋ง] ๋นŒ๋” ํŒจํ„ด @Builder

1. ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ• ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์ƒ์„ฑ์ž ํŒจํ„ด User user = new User("์œ ์ €1", "1234"); userRepository.save(user); ์ž๋ฐ”๋นˆ์ฆˆ ํŒจํ„ด User user = new User(); user.setUserId("์œ ์ €1"); user.setUserPassword("1234"); userRepository.save(user); ๋นŒ๋” ํŒจํ„ด User user = User.builder() .userId("์œ ์ €1") .userPassword("1234") .build(); userRepository.save(user); 2. ๋นŒ๋” ํŒจํ„ด(Builder Pattern)์ด๋ž€? ๋นŒ๋”ํŒจํ„ด์€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๊ฐ์ฒด..

[์Šคํ”„๋ง] DTO๋ฅผ ์™œ ์“ธ๊นŒ?

Spring ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ DTO๋ฅผ ์™œ ์“ฐ๋Š”์ง€ ์˜๋ฌธ์ด ๋“ค์—ˆ๋‹ค. ์‚ฌ์‹ค DTO๊ฐ€ ์ •ํ™•ํžˆ ์™€๋‹ฟ์ง€๋„ ์•Š์•„์„œ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. 1. DTO(Data Transer Object) DTO๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์šฉ๋„์˜ ๊ฐ์ฒด์ด๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ์ˆœํ•œ ๊ฐ์ฒด์ด๋‹ค. ํด๋ผ์ด์–ธํŠธ์™€ Controller ์‚ฌ์ด์—์„œ๋Š” DTO๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ๋ฐ›๊ณ  ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€ (Service, Repository..)์—์„œ๋Š” Domain(Entity ๋˜๋Š” Model)์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. Service, Repository์—์„œ๋Š” ๊ฐ์ฒด๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ณ , Controller์—์„œ DTO ๊ฐ์ฒด๋กœ ๋งคํ•‘ํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์— ๋ฆฌํ„ดํ•œ๋‹ค. 2. DTO๋ž‘ Domain ๋ถ„๋ฆฌํ•˜๋Š” ์ด์œ  2-1. ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„..

[์Šคํ”„๋ง] ๊ณต๊ณต๋ฐ์ดํ„ฐ SERVICE_KEY_IS_NOT_REGISTERED_ERROR ํ•ด๊ฒฐ

์˜ค๋ฅ˜ ์Šคํ”„๋ง์œผ๋กœ ๊ตญํ† ๋ถ€ ๊ฑด์ถ•๋ฌผ๋Œ€์žฅ์ •๋ณด Open Api๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š”๋ฐ ์—๋Ÿฌ๋ฅผ ๋งˆ์ฃผํ–ˆ๋‹ค. ์ธ์ฝ”๋”ฉ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ธŒ๋ผ์šฐ์ €์—์„œ api ํ˜ธ์ถœํ•˜๋ฉด ์ž˜ ๋ถˆ๋Ÿฌ์™€์ง€๋Š”๋ฐ, ์Šคํ”„๋ง์—์„œ ํ˜ธ์ถœํ•˜๋ฉด SERVICE_KEY_IS_NOT_REGISTERED_ERROR ์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค. SERVICE ERROR SERVICE_KEY_IS_NOT_REGISTERED_ERROR 30 ํ•ด๊ฒฐ์ฑ… 1. ์„œ๋น„์Šคํ‚ค๋ฅผ ๋””์ฝ”๋”ฉํ‚ค๋กœ ์„ค์ • ํ›„์— URLEncoder๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ๋ž‘ ์„œ๋น„์Šคํ‚ค๋ฅผ ์ธ์ฝ”๋”ฉํ•ด์คฌ๋‹ค ์ธ์ฝ”๋”ฉ ๋””์ฝ”๋”ฉ์„ ์ž˜ํ•˜์ž.. // ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ URLEncoder๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฝ”๋”ฉ String encodedSigunguCd = URLEncoder.encode(sigunguCd, StandardCharsets.UTF_8.toString()); Stri..

[์Šคํ”„๋ง] ์›น์„œ๋ฒ„, WAS, ์„œ๋ธ”๋ฆฟ / SSR, CSR

์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด ํ—ท๊ฐˆ๋ ธ๋˜ ๊ฐœ๋…๋“ค ์œ„์ฃผ๋กœ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค. ์›น์„œ๋ฒ„ vs WAS ๋‘˜ ๋‹ค HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ์›น์„œ๋ฒ„๋Š” ์ •์  ๋ฆฌ์†Œ์Šค ์ œ๊ณตํ•œ๋‹ค. NGINX, APACHE๊ฐ€ ์žˆ์Œ WAS๋Š” ์›น์„œ๋ฒ„ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์„œ๋ธ”๋ฆฟ, JSP MVC๋“ฑ ํ†ฐ์บฃ, Jetty, Undertow๊ฐ€ ์žˆ์Œ ์›น ์‹œ์Šคํ…œ ๊ตฌ์„ฑ WAS๋ž‘ DB๋งŒ์œผ๋กœ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์ด ๊ฐ€๋Šฅํ•œ๋ฐ, ์ด๋ ‡๊ฒŒ๋˜๋ฉด WAS๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์„ ๋‹ด๋‹นํ•ด์„œ ์„œ๋ฒ„ ๊ณผ๋ถ€ํ•˜๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์ •์  ๋ฆฌ์†Œ์Šค๋Š” ์›น์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง๊ณผ ๊ฐ™์€ ๋™์  ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉด WAS์— ์š”์ฒญ์„ ์œ„์ž„ํ•œ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ์›น์„œ๋ฒ„๋ž‘ WAS์„œ๋ฒ„๋ฅผ ๊ฐ๊ฐ ์ฆ์„คํ•  ์ˆ˜ ์žˆ์–ด์„œ ํšจ์œจ์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค! ์„œ๋ธ”๋ฆฟ HTTP ์š”์ฒญ์ด ์˜ค..