๋ชฉ๋ก๐Ÿ–ฅ BE ๋ฐฑ์—”๋“œ (118)

Bibi's DevLog ๐Ÿค“๐ŸŽ

[Spring] ์ธํ”„๋Ÿฐ ์Šคํ”„๋ง ์ž…๋ฌธ(๊น€์˜ํ•œ ๋‹˜) - ๋นŒ๋“œ ๋ฐ ์‹คํ–‰, ์ •์  ์ปจํ…์ธ /MVC์™€ ํ…œํ”Œ๋ฆฟ์—”์ง„/API

์ด ๊ธ€์€ ์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ ๋‹˜์˜ ์Šคํ”„๋ง ์ž…๋ฌธ ๊ฐ•์˜ ๋ฅผ ๋“ฃ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. (์ด์–ด์„œ) ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ๋งŒ๋“  ํŒŒ์ผ์„ ์ธํ…”๋ฆฌJํ™˜๊ฒฝ์ด ์•„๋‹Œ cmd ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•ด ๋ณธ๋‹ค. ์„œ๋ฒ„์—์„œ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ํ•ด๋‹นํ•œ๋‹ค (cmd๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ) - ์‹ค๋ฌด์—์„œ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” cmd๋งŒ์œผ๋กœ ๋นŒ๋“œ๋ฅผ ํ•ด์•ผ ํ•  ๋•Œ๋„ ๋งŽ๋‹ค. (์œˆ๋„์šฐ ๊ธฐ์ค€) ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ๋ฅผ ์—ด๊ณ  cd ๋””๋ ‰ํ† ๋ฆฌ๋ช…์„ ํ†ตํ•ด ์Šคํ”„๋ง ํŒŒ์ผ์ด ์žˆ๋Š” ์œ„์น˜๋กœ ์ด๋™ํ•œ๋‹ค. cd ๋””๋ ‰ํ† ๋ฆฌ๋ช… : ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ dir : =ls. ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋‚ด์šฉ์„ ๋ณด์—ฌ ์คŒ dir๋กœ ํ™•์ธํ–ˆ์„ ๋•Œ gradlewํŒŒ์ผ์ด ๋ณด์ด๋ฉด, gradlew build ๋ช…๋ น์–ด๋กœ ๊ทธ๋ž˜๋“ค์„ ์‹คํ–‰ํ•œ๋‹ค. ์ž ์‹œ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ ์„ค์น˜ํ•˜๊ณ  ๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋œ๋‹ค. BUILD SUCCESSFUL ์ด ๋‚˜์˜ค๋ฉด ๋นŒ๋“œ๊ฐ€ ์ž˜ ๋œ ๊ฒƒ. ๋นŒ๋“œ๊ฐ€ ์ž˜ ..

[Spring] ์ธํ”„๋Ÿฐ ์Šคํ”„๋ง ์ž…๋ฌธ(๊น€์˜ํ•œ ๋‹˜) - ๊ฐ•์˜ ์†Œ๊ฐœ, ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ดํŽด๋ณด๊ธฐ, Viewํ™˜๊ฒฝ์„ค์ •

์ธํ”„๋Ÿฐ - ์Šคํ”„๋ง ์ž…๋ฌธ ๊ฐ•์˜ ์ด ๊ธ€์€ ์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ ๋‹˜์˜ ์Šคํ”„๋ง ์ž…๋ฌธ ๊ฐ•์˜(๋ฌด๋ฃŒ) ๋ฅผ ๋“ฃ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๊ฐ•์˜์†Œ๊ฐœ ๊ฐ„๋‹จํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•ด ๋ณด๋Š” ๊ฐ•์ขŒ์ด๋‹ค. ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์Šคํ”„๋ง ๋ถ€ํŠธ๋กœ ์›น์„œ๋ฒ„ ์‹คํ–‰ ํšŒ์› ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ ์›น MVC ๊ฐœ๋ฐœ DB์—ฐ๋™ - JDBC, JPA, ์Šคํ”„๋ง๋ฐ์ดํ„ฐ JPA ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ ํฌ์ธํŠธ ์Šคํ”„๋ง ๊ธฐ์ˆ  ๊ทธ ์ž์ฒด์— ๋งค๋ชฐ๋˜๊ธฐ๋ณด๋‹ค ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€์— ์ดˆ์ ์„ ๋งž์ถ˜๋‹ค. ์‹ค๋ฌด์—์„œ ๊ฑฐ์˜ ์“ฐ์ง€ ์•Š๋Š” ์˜ค๋ž˜๋œ, ๋งˆ์ด๋„ˆํ•œ ์Šคํ”„๋ง ๊ธฐ์ˆ ์€ ์ œ์™ธํ•œ๋‹ค. ์Šคํ”„๋ง์€ ๋งค์šฐ ๊ฑฐ๋Œ€ํ•˜๊ณ  ๊นŠ์ด์žˆ๋Š” ๊ธฐ์ˆ ์ด๊ธฐ ๋•Œ๋ฌธ์—, ํ•„์š”ํ•œ ๊ฒƒ ๋ถ€ํ„ฐ ๋ฐฐ์šด๋‹ค. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ java 11 IntelliJ ๋˜๋Š” Eclipse ์„ค์น˜ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ https://start.spring.io/ ์—์„œ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ๋ฅผ..

๋ฐ๋“œ๋ฝ์ด๋ž€?

๋ฐ๋“œ๋ฝ DeadLock ๋ฐ๋“œ๋ฝ (๊ต์ฐฉ ์ƒํƒœ) ์ด๋ž€? : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์–ป์ง€ ๋ชปํ•ด ๋‹ค์Œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ. ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ž‘์—…์ด ์„œ๋กœ ์ƒ๋Œ€๋ฐฉ์˜ ์ž‘์—…์ด ๋๋‚˜๊ธฐ๋งŒ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์–ด ๊ฒฐ๊ณผ์ ์œผ๋กœ ์•„๋ฌด๊ฒƒ๋„ ์™„๋ฃŒ๋˜์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ๋ฅผ ๋งํ•จ. ๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ ์ƒํ™ฉ ๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ, ์‹œ์Šคํ…œ์ ์œผ๋กœ ํ•œ์ •๋œ ์ž์›์„ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์š”์ฒญํ–ˆ์„ ๋•Œ, ๊ทธ ์‹œ๊ฐ์— ๊ทธ ์ž์›์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒ ์ด๋Ÿฐ ๊ฒฝ์šฐ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋Š” ๋Œ€๊ธฐ ์ƒํƒœ๊ฐ€ ๋จ ๋Œ€๊ธฐ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์‹คํ–‰ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†์„ ๋•Œ๋ฅผ ๊ต์ฐฉ ์ƒํƒœ๋ผ๊ณ  ํ•œ๋‹ค. ๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ ์กฐ๊ฑด ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ์ผ์–ด๋‚˜๋ ค๋ฉด ๋‹ค์Œ์˜ ๋„ค ํ•„์š” ์กฐ๊ฑด์„ ์ถฉ์กฑ์‹œ์ผœ์•ผ ํ•œ๋‹ค. ์ฆ‰, ์•„๋ž˜ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด ๊ต์ฐฉ ์ƒํƒœ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค...

[Java] ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด(๊ธฐ์ดˆ)

ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด Factory Method Pattern ์ด๋ž€? ์ž๋ฐ” ๋””์ž์ธํŒจํ„ด์˜ ํ•˜๋‚˜๋กœ, ๊ฐ์ฒด ์ƒ์„ฑ์„ ๋Œ€์‹  ์ˆ˜ํ–‰ํ•ด ์ฃผ๋Š” ๊ณต์žฅ์— ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๋Š” ๋Œ€์‹ , ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฐ„์ ‘์ ์œผ๋กœ ์ƒ์„ฑ ํ›„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ์‹. (๊ฐ„์ ‘์ ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋Œ€์‹  ์ƒ์„ฑํ•ด ์ฃผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํŒฉํ† ๋ฆฌ๋ฉ”์†Œ๋“œ๋ผ๊ณ  ํ•œ๋‹ค) ์žฅ์  ์ƒ์„ฑํ•  ํด๋ž˜์Šค๋ฅผ ๋ฏธ๋ฆฌ ์•Œ์ง€ ๋ชปํ•ด๋„ ํŒฉํ† ๋ฆฌ ํด๋ž˜์Šค๊ฐ€ ๊ฐ์ฒด ์ƒ์„ฑ์„ ๋‹ด๋‹นํ•ด ์ค€๋‹ค. ๊ฐ์ฒด์˜ ์ž๋ฃŒํ˜•์ด ํ•˜์œ„ํด๋ž˜์Šค์— ์˜ํ•ด ๊ฒฐ์ •๋œ๋‹ค - ํ™•์žฅ์ด ์šฉ์ดํ•˜๋‹ค ํ™•์žฅ์„ฑ ์žˆ๋Š” ์ „์ฒด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋™์ผํ•œ ํ˜•ํƒœ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹จ์  ๊ฐ์ฒด๊ฐ€ ๋Š˜์–ด๋‚  ๋•Œ ๋งˆ๋‹ค ํ•˜์œ„ํด๋ž˜์Šค๋ฅผ ์žฌ์ •์˜ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ถˆํ•„์š”ํ•œ ๋งŽ์€ ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์ œ Shape.java public interface Shape { ..

[Java] static import์™€ static๋ฉ”์†Œ๋“œ

static import๊ณผ static ๋ฉ”์†Œ๋“œ static ๋ฉ”์†Œ๋“œ๋ž€ ์ž๋ฐ”์—์„œ ๋ฉ”์†Œ๋“œ๋ฅผ static์œผ๋กœ ์„ ์–ธํ•˜๋ฉด, ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฐ”๋กœ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. int i = Math.abs(-3) ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•œ๋‹ค. (java.lang.Mathํด๋ž˜์Šค์˜ abs()๋ฉ”์†Œ๋“œ) static import๋ž€ static import๋Š” ์ด๋Ÿฐ static๋ฉ”์†Œ๋“œ๋ฅผ ๋”์šฑ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ผ๋ฐ˜ import์™€ ๋‹ค๋ฅด๊ฒŒ ๋ฉ”์†Œ๋“œ/๋ณ€์ˆ˜๋ฅผ ํŒจํ‚ค์ง€, ํด๋ž˜์Šค๋ช… ์—†์ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค€๋‹ค. import static java.lang.Math.abs;์™€ ๊ฐ™์ด static import ํ•œ ๋’ค์—๋Š” int i = abs(-3)๊ณผ ๊ฐ™์ด ํ•ด๋‹น static๋ฉ”์†Œ๋“œ๋ฅผ ํด๋ž˜์Šค๋ช… ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. โ€ป ๋‹จ..

[Java] ์ž๋ฐ” ์ƒ์ˆ˜์™€ ์ƒ์ˆ˜ ์ปจ๋ฒค์…˜ / System.exit(0)

๋ฆฌ๋ทฐ์–ด ๋ถ„๊ป˜์„œ ๋งˆ์ง€๋ง‰ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‹ฌ์•„ ์ฃผ์‹  ๋‚ด์šฉ์— ๋ฐฐ์šธ ์ ์ด ๋งŽ์•„์„œ, ๊ทธ ๋ถ€๋ถ„์„ ์ •๋ฆฌํ–ˆ๋‹ค. ์ž๋ฐ” ์ƒ์ˆ˜์™€ ์ƒ์ˆ˜ ์ปจ๋ฒค์…˜ Q. ์ž๋ฐ” ์ƒ์ˆ˜๋ช…์€ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž์— Snake Case๋ฅผ ์“ด๋‹ค, ์ง€์—ญ๋ณ€์ˆ˜๋Š” ์†Œ๋ฌธ์ž์— Camel Case๋ฅผ ์“ด๋‹ค ์ด ์ •๋„๋งŒ ์•Œ๊ณ  ์žˆ๋Š”๋ฐ, ์œ„์™€ ๊ฐ™์ด ์ง€์—ญ๋ณ€์ˆ˜์ธ ์ƒ์ˆ˜์˜ ๊ฒฝ์šฐ๋Š” ์–ด๋–ป๊ฒŒ ์ง€์–ด์•ผ ํ•˜๋‚˜์š”?๐Ÿค” ์šฐ์„ ์€ ์ƒ์ˆ˜๋‹ˆ๊นŒ ๋Œ€๋ฌธ์ž๋กœ ์“ฐ๊ธด ํ–ˆ๋Š”๋ฐ, ์ด๋Ÿฐ ๊ฒฝ์šฐ ์ƒ์ˆ˜์ด๊ธฐ ์ „์— ์ง€์—ญ๋ณ€์ˆ˜์ด๋ฏ€๋กœ start end์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š” ๊ฑด๊ฐ€์š”? ์ฝ”๋ฉ˜ํŠธ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!๐Ÿ™‡‍โ™€๏ธ A. The names of variables declared class constants and of ANSI constants should be all uppercase with words separated by underscores ("_"..

[Java] ๊ฐœํ–‰๋ฌธ์ž, System.getProperty("line.separator")

๊ฐœํ–‰๋ฌธ์ž - System.getProperty("line.separator"), System.lineSeparator() ๊ฐœํ–‰๋ฌธ์ž(์ค„๋ฐ”๊ฟˆ๋ฌธ์ž, new line)๋ž€? : ์ปดํ“จํ„ฐ์—์„œ ์ค„๋ฐ”๊ฟˆ์„ ๋‚˜ํƒ€๋„ค๋Š” ์ œ์–ด๋ฌธ์ž. ์ค„๋ฐ”๊ฟˆ๋ฌธ์ž, ์ƒˆ์ค„๋ฌธ์ž, ๋ผ์ธ์—”๋”ฉ, ๋ณต๊ท€๊ฐœํ–‰.. ๋“ฑ์œผ๋กœ๋„ ๋ถˆ๋ฆฐ๋‹ค. (newLine, line ending, end-of-line,EOL, line break ..) ๊ฐœํ–‰๋ฌธ์ž์—๋Š” ๋‘ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. LF : new Line Feed, ๋ผ์ธํ”ผ๋“œ, ๋‰ด๋ผ์ธ. ์ปค์„œ๋ฅผ ํ•œ ์นธ ์•„๋ž˜๋กœ ์ด๋™ํ•ด ์ƒˆ๋กœ์šด ๋ผ์ธ์„ ์ถ”๊ฐ€ \n ์•„์Šคํ‚ค์ฝ”๋“œ : 10 CR : Carrige Return, ์บ๋ฆฌ์ง€๋ฆฌํ„ด, ๋ฆฌํ„ด. ์ปค์„œ๋ฅผ ๋งจ ์™ผ์ชฝ์œผ๋กœ ์ด๋™(์‹œ์ž‘ ์œ„์น˜๋กœ ๋ณต๊ท€) \r ์•„์Šคํ‚ค์ฝ”๋“œ : 13 ์—”ํ„ฐํ‚ค์™€ ๊ฐ™๋‹ค. ์šด์˜์ฒด์ œ๋ณ„ ์ค„๋ฐ”๊ฟˆ๋ฌธ์ž ์ค„๋ฐ”๊ฟˆ ๋ฌธ์ž(๊ฐœํ–‰๋ฌธ..

[Java] ์ŠคํŠธ๋ฆผ, ์ŠคํŠธ๋ฆผ์˜ ์—ฐ์‚ฐ, Optional

์ŠคํŠธ๋ฆผ Stream ์ŠคํŠธ๋ฆผ์ด๋ž€? : ๋ฐฐ์—ด, ์ปฌ๋ ‰์…˜, ํŒŒ์ผ ๋“ฑ ์ธ์Šคํ„ด์Šค์˜ ์ €์žฅ ์š”์†Œ๋ฅผ ์‰ฝ๊ฒŒ ์ฐธ์กฐํ•˜๊ฒŒ ํ•ด ์ฃผ๋Š” ๋ฐ˜๋ณต์ž. (์ถœ์ฒ˜) ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์ถ”์ƒํ™”ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ๋“ค์„ ์ •์˜ํ•ด ๋†“์Œ. '๋ฐ์ดํ„ฐ ์†Œ์Šค์˜ ์ถ”์ƒํ™”'์˜ ์˜๋ฏธ? : ๋ฐ์ดํ„ฐ ์†Œ์Šค(๋ฐฐ์—ด/์ปฌ๋ ‰์…˜/ํŒŒ์ผ ..)๊ฐ€ ๋ฌด์—‡์ด๋˜ ๊ฐ„์— ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค. : ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์•„์ง„๋‹ค. // String[] ๊ณผ List์ด๋ผ๋Š” ๋‘ ๋ฐ์ดํ„ฐ์†Œ์Šค String[] strArr = {"aaa", "bbb", "ccc"}; List strList = Arrays.asList(strArr); // Stream ์ƒ์„ฑ Stream strStream1 = Arrays.stream(strArr); Stream strStream2 = ..