๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

๐Ÿ’Š Java & Kotlin & Spring53

[Springboot] IntelliJ๋ฅผ ์ด์šฉํ•˜์—ฌ Springboot + Mysql + Jpa + Lombok ํ”„๋กœ์ ํŠธ Setup ํ›„ Rest API ์„œ๋ฒ„ CRUD ํ…Œ์ŠคํŠธ (MacOS) ๋ณธ ๊ธ€์€ Springboot์™€ Mysql + Jpa + Lombok ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ธ”๋กœ๊ทธ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  Springboot + Jpa ๊ด€๋ จ ๊ธ€์€ ์ด ๊ธ€์— ์กด์žฌํ•˜๋Š” ๋‚ด์šฉ์„ ์ „์ œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ˆœ์„œ Springboot Project ์ƒ์„ฑ Gradle ์˜์กด์„ฑ ์ถ”๊ฐ€ application.properties ์„ค์ • db table ์ƒ์„ฑ Lombok ์„ค์ • ์ฝ”๋“œ ๊ตฌํ˜„ (model, controller, repository ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ƒ์„ฑ) CRUD ํ…Œ์ŠคํŠธ ์ˆœ์„œ๋Š” IntelliJ IDE๊ฐ€ ๊น”๋ ค์žˆ๋‹ค๋Š” ์ „์ œ ํ•˜์— ์ง„ํ–‰๋œ๋‹ค. Springboot Project ์ƒ์„ฑ ์šฐ๋ฆฌ๋Š” Springboot ํ”„๋กœ์ ํŠธ๋ฅผ ์ด์šฉํ•ด์„œ JPA๋ฅผ ํ…Œ์ŠคํŠธํ•  ๊ฒƒ์ด๋ฏ€๋กœ Springboot ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ง์ ‘ S.. 2020. 8. 27.
[Spring & Springboot] Generic์„ ์ด์šฉํ•˜์—ฌ ๋ชจ๋“  Request, Response์— Header์™€ CRUD ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด์ž. ์ด ์‹œ๋ฆฌ์ฆˆ๋Š” Spring์—์„œ Generic์„ ์ด์šฉํ•˜์—ฌ CRUD ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด์ž.์™€ ์ด์–ด์ง€๋Š” ๊ธ€ ์ž…๋‹ˆ๋‹ค. Generic(์ œ๋„ˆ๋ฆญ)์„ ํ•ต์‹ฌ๋งŒ ์ดํ•ดํ•ด๋ณด์ž. Spring์—์„œ Generic์„ ์ด์šฉํ•˜์—ฌ CRUD ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด์ž. ์ด ๊ธ€์€ ์‹ค์ „์— ๊ด€ํ•œ ๊ธ€์ด๊ณ  ์ œ๋„ˆ๋ฆญ์— ๋Œ€ํ•œ ์ด๋ก ์ด ๋ถ€์กฑํ•˜์‹  ๋ถ„๋“ค์€ 1๋ฒˆ ๋งํฌ๋ฅผ ํ†ตํ•ด ์ถฉ๋ถ„ํžˆ ์ˆ™์ง€ํ•˜๊ณ  ์˜ค์‹œ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ œ๋„ค๋ฆญ์„ ์‹ค์ „์—์„œ ์‚ฌ์šฉํ•ด๋ณด์ž. ์ง€๋‚œ ์‹œ๊ฐ„์— ๋ฐฐ์šด ์ œ๋„ค๋ฆญ์— ์ด์–ด์„œ ์ด์ œ ์‹ค์ „์—์„œ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์œ„ํ•ด ํ™˜๊ฒฝ ๊ตฌ์„ฑ์„ ํ•ด๋ณด์ž. Jpa + Springboot + Mysql ์—ฐ๋™์— ๋Œ€ํ•ด์„œ๋Š” ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  Http ํ†ต์‹ ์— Header๋ผ๋Š” ๊ณตํ†ต ๋ถ€๋ถ„์ด ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค. ์›๋ž˜๋ผ๋ฉด request, response ์— setHeader๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํ—ค๋”๋ฅผ ๊ด€.. 2020. 8. 27.
[Java ์‹ฌํ™”] Generic(์ œ๋„ค๋ฆญ)์„ ํ•ต์‹ฌ๋งŒ ์ดํ•ดํ•ด๋ณด์ž. ์ด ์‹œ๋ฆฌ์ฆˆ๋Š” Spring์—์„œ Generic์„ ์ด์šฉํ•˜์—ฌ CRUD ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด์ž.์™€ ์ด์–ด์ง€๋Š” ๊ธ€ ์ž…๋‹ˆ๋‹ค. Generic(์ œ๋„ˆ๋ฆญ)์„ ํ•ต์‹ฌ๋งŒ ์ดํ•ดํ•ด๋ณด์ž. Spring์—์„œ Generic์„ ์ด์šฉํ•˜์—ฌ CRUD ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด์ž. ์ด ๊ธ€์€ ์ด๋ก ์— ๊ด€๋ จํ•œ ๊ธ€์ด๊ณ  ์‹ค์ „์—์„œ ์–ด๋–ป๊ฒŒ ์“ฐ์ด๋Š”์ง€ ๊ถ๊ธˆํ•˜์‹œ๋‹ค๋ฉด 2๋ฒˆ ๋งํฌ๋ฅผ ํด๋ฆญํ•ด์„œ ํ™•์ธํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ ๋ฐ”๋กœ Generic(์ œ๋„ˆ๋ฆญ)์œผ๋กœ ๋ถˆ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ์ œ๋„ˆ๋ฆญ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋Š” ์•Œ๊ฒ ๋Š”๋ฐ ์‹ค์ „์—์„œ ๋–ค ํด๋ž˜์Šค๋ฅผ ์ œ๋„ˆ๋ฆญ์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๊ฑฐ๋‚˜ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์ด๋ฒˆ ์‹œ๋ฆฌ์ฆˆ๊ฐ€ ํฐ ๋„์›€์ด ๋˜์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ•œ๋‹ค. ์‹œ์ž‘ํ•ด๋ณด์ž. Generic ์ œ๋„ˆ๋ฆญ์€ Java 1.5 ๋ฒ„์ „๋ถ€ํ„ฐ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ๋ญ ์ด๋Ÿฐ ์ด์•ผ๊ธฐ๋Š” ์ž ์‹œ ์ ‘์–ด ๋‘๊ณ  ์ œ๋„ˆ๋ฆญ์ด ๋ฌด์—‡์ด๋ฉฐ ์™œ ์ œ๋„ˆ๋ฆญ์„.. 2020. 8. 27.
[Spring-Core] ์Šคํ”„๋ง์˜ ์ปค๋งจ๋“œ ๊ฐ์ฒด(Command Object)๋ฅผ ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด์ž. ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ Spring-Command Object์ด๋‹ค. ์ปค๋งจ๋“œ ๊ฐ์ฒด๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Spring์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์ด๋ผ๋Š” ๊ฐ€์ •์„ ํ•˜๊ณ  ๋ถˆํŽธํ•จ์„ ๋จผ์ € ์ƒ๊ฐํ•ด๋ณด๊ณ  Spring์ด ์ด ๋ถˆํŽธํ•จ์„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•ด๋‚˜๊ฐ€๋ ค๊ณ  ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋กํ•˜์ž. ๋ถˆํŽธํ•จ : ๊ธฐ์กด์˜ Http ์š”์ฒญ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ์•ฝ request๋กœ 100๊ฐ€์ง€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. public String joinMember(HttpServletRequest request) { String username = request.getParameter("username"); String password = request.getParameter("password"); String address = request.getParameter("addre.. 2020. 7. 30.
[Java ์‹ฌํ™”] List ์ปฌ๋ ‰์…˜์—์„œ ์ฐธ์กฐ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์–ด๋–ค ๊ฒƒ์œผ๋กœ ํ•ด์•ผํ• ๊นŒ? ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ ArrayList๋‚˜ LinkedList๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์€ ์–ด๋–ค ๊ฒƒ์œผ๋กœ ํ•ด์•ผํ• ๊นŒ? ์ด๋‹ค. ์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ด๋ƒ๋ฉด ํ•„์ž๋Š” ์ž๋ฐ”๋ผ๋Š” ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๋‹ค์–‘ํ•œ ์ฝ”๋“œ๋ฅผ ๋ด์™”์—ˆ๋Š”๋ฐ, ๊ฐ™์€ ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ ์ด๋”๋ผ๋„ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ง  ๊ฒฝ์šฐ๋ฅผ ๋ณด์•˜๋‹ค. ๊ทธ ์ค‘ ๋Œ€ํ‘œ์ ์ธ๋ฐ ๋ฐ”๋กœ List ์ปฌ๋ ‰์…˜์—์„œ์˜ ์ฐธ์กฐ๋ณ€์ˆ˜ ํƒ€์ž…์ด๋‹ค. ์ด ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์ด ๋‘˜์˜ ์ฐจ์ด๋ฅผ ๋ช…ํ™•ํžˆ ๋‹ต๋ณ€์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋‚ด ๊ธ€์„ ๋ณด์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๋‚ด์šฉ์ด๋‹ค. ์ด ๋‘˜์˜ ์ฐจ์ด๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์ „์— ๋‹คํ˜•์„ฑ์ด๋ผ๋Š” ๊ฐœ๋…๊ณผ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์–ด๋Š์ •๋„ ์ดํ•ด๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์˜ค๋Š˜์€ ๋‹คํ˜•์„ฑ๊ณผ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์•Œ์•„๋ณด๋Š” ํฌ์ŠคํŒ…์ด ์•„๋‹ˆ๋ฏ€๋กœ ์ƒํ™œ์ฝ”๋”ฉ์˜ ๋‹คํ˜•์„ฑ ๊ฐ•์˜๊ณผ ์ƒํ™œ์ฝ”๋”ฉ์˜ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ•์˜๋ฅผ ๋ด๋ณธ๋‹ค๋ฉด ์ดํ•ด๊ฐ€ ๋น ๋ฅด๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.. 2020. 7. 29.
[Java ์‹ฌํ™”] Java ์—์„œ Comparable๋กœ ์ •๋ ฌ ๊ธฐ์ค€ ๋ฐ”๊พธ๊ธฐ. Java์—์„œ comparator๋กœ ์ •๋ ฌ ๊ธฐ์ค€ ๋ฐ”๊พธ๊ธฐ ์ž๋ฐ”๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด๋ฅผ ํ•˜๋‹ค ๋ณด๋ฉด ํŠน์ • ์กฐ๊ฑด์— ์˜ํ•œ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž๋ฐ”์—์„œ๋Š” ์ •๋ ฌ์„ ์œ„ํ•ด์„œ Arrays.sort() ์˜ static ๋ฉ”์„œ๋“œ๋‚˜ ,Collections.sort()์˜ static ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ์ด๋Š” ๊ธฐ๋ณธ ์ •๋ ฌ์ธ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ์กฐ๊ฑด์— ์˜ํ•œ ์ •๋ ฌ(๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ ์ •๋ ฌ, ๊ฐ์ฒด ์ •๋ ฌ, ์กฐ๊ฑด ์ •๋ ฌ)์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋ž€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ๋ถˆํŽธํ•จ์„ ํ•ด์†Œํ•ด๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€์˜ ์กฐ๊ฑด ์ •๋ ฌ ๋ฐฉ์‹์ด ์กด์žฌํ•˜๋Š”๋ฐ ๋ฐ”๋กœ Comparator, Comparable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•œ ์ •๋ ฌ ๋ฉ”์„œ๋“œ ์žฌ์ •์˜์ด๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ„์˜ ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ฅธ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์ฐจ์ด๋ถ€ํ„ฐ ๋ช…ํ™•ํ•˜๊ฒŒ ์งš๊ณ  ๋„˜์–ด๊ฐ€์ž. Compara.. 2020. 2. 24.