IT/Java 4

[Java] Spring boot ์ž…๋ฌธ์ž๋ฅผ ์œ„ํ•œ ๊ฐœ๋… ์ •๋ฆฌ (feat. ์‚ฌ์‹ค์€ ๋‚ด๊ฐ€ ๋ชฐ๋ผ์„œ ์ •๋ฆฌํ•œ ๊ฑธ ๊ณ๋“ค์ธ)

์ด๋ฒˆ SKALA์—์„œ ์Šคํ”„๋ง๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ,์•Œ๊ฒŒ ๋œ ๊ฐœ๋…์ด๋‚˜ ๊ณ„์† ํ—ท๊ฐˆ๋ ธ๋˜ ๋ฌธ๋ฒ•์„ ํ•œ ๋ฒˆ์— ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ด๋‹ค~!0. ๊ฐœ๋ฐœ ๋ฐ ํŒŒ์ผ ์ž‘์„ฑ ์ˆœ์„œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ → ๋ฆฌํฌ์ง€ํ† ๋ฆฌ → ์„œ๋น„์Šค → ์ปจํŠธ๋กค๋Ÿฌ → ํ”„๋ก ํŠธ์—”๋“œํ˜„์—…์˜ ๊ต์ˆ˜๋‹˜๊ป˜์„œ๋Š” ์ •์„์ ์ธ ์ˆœ์„œ๋Š” ์œ„์™€ ๊ฐ™๋‹ค๊ณ  ๋ง์”€ํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ ์ƒํ™ฉ์— ๋”ฐ๋ผ, ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ๋ณ‘๋ ฌ์ ์œผ๋กœ ๊ธ‰ํ•˜๊ฒŒ ์ง„ํ–‰๋ผ์•ผ ํ•  ๋•Œ๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๊ธฐ๋„ ํ•œ๋‹ค๊ณ  ํ•˜์‹ฌ!์œ„์˜ ์ˆœ์„œ๋Š” ๊ฐœ์ธ์˜ ์ทจํ–ฅ์— ๋‹ฌ๋ฆฐ ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค! ์ „์ฒด ๋‹ค ๋ณด์ด๋ฉด,EntityRepositoryDTOMapperServiceController 1. ์Šคํ”„๋ง์˜ ํ•ต์‹ฌ ๊ฐœ๋…: Bean, DI, ์˜์กด์„ฑ ์ฃผ์ž…Bean์ด๋ž€?Bean์€ Spring์ด ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด์ง์ ‘ new ํ‚ค์›Œ๋“œ๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ , `@Compon..

IT/Java 2025.04.14

[Java] SOLID: ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ 5์›์น™

SOLID๋ž€?์‹œ์Šคํ…œ์— ์ƒˆ๋กœ์šด ์š”๊ตฌ์‚ฌํ•ญ์ด๋‚˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ์„ ๋•Œ๋„ ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์ฒดํ•˜๊ณ  ํ™•์žฅ์„ฑ ์žˆ๋Š” ์‹œ์Šคํ…œ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.SOLID ์‹œ์Šคํ…œ์„ ์ ์šฉํ•œ๋‹ค? = ๋ฆฌํŒฉํ† ๋ง์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ์ค„์—ฌ์„œ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์˜ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. S - ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ SPR, Single Responseibility Principle "ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค" ํ•œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ์ด๋กœ ์ธํ•ด ํด๋ž˜์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋‹จ ํ•˜๋‚˜๋ฟ์ด์–ด์•ผ ํ•จํด๋ž˜์Šค์˜ ์—ญํ• ์„ ๋ช…ํ™•ํžˆ ํ•˜์—ฌ ๋ณ€๊ฒฝ์— ๋”ฐ๋ฅธ ํŒŒ๊ธ‰ ํšจ๊ณผ๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Œ O - ๊ฐœ๋ฐฉ/ํ์‡„ ์›์น™OCP, Open/Closed Principle "ํ™•์žฅ์—๋Š” ์—ด๋ ค ์žˆ์–ด์•ผ ํ•˜๊ณ , ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•œ๋‹ค" ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”..

IT/Java 2025.04.03

[Java] ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ง•

๊ต์ˆ˜๋‹˜๊ป˜์„œ ์ž์‹ ์ด ๋ฉด์ ‘๊ด€์ด๋ฉด ๋ฌผ์–ด๋ณผ๋งŒํ•œ ๊ฒƒ์œผ๋กœ ์•„๋ž˜์˜ ๊ฒƒ๋“ค์„ ๋ง์”€ํ•˜์…”์„œ, ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค~! ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ: Object-oriented programming (OOP, ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ 4๊ฐ€์ง€ ํŠน์ง•์€ ์บก์Аํ™”, ์ƒ์†, ์ถ”์ƒํ™”, ๋‹คํ˜•์„ฑ์ด๋‹ค. ์บก์Аํ™” ๊ฐ์ฒด์˜ ์ƒํƒœ (๋ฐ์ดํ„ฐ)๋ฅผ ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๊ณ , ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผํ•˜๋„๋ก ๋ณดํ˜ธํ•˜๋Š” ๊ฐœ๋… ๋ฐ์ดํ„ฐ (์†์„ฑ)์™€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋ฉ”์„œ๋“œ (ํ–‰๋™)์„ ํ•˜๋‚˜์˜ ๋‹จ์œ„ (ํด๋ž˜์Šค)๋กœ ๋ฌถ๊ณ , ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ˆจ๊ธฐ๋Š” ๊ฒƒ ๋ชฉ์ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ, ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ ์ˆ˜์ค€์—์„œ๋งŒ ์ˆ˜์ • ๊ฐ€๋Šฅ (์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•ด์ง)์‚ฌ์šฉํ•„๋“œ๋Š” private, protected ๋“ฑ์˜ ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆจ๊น€ ์ ‘๊ทผ์„..

IT/Java 2025.04.02

[ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…] "is"๋กœ ์‹œ์ž‘ํ•˜๋Š” boolean ํƒ€์ž…์˜ JSON ๋ณ€ํ™˜

Backend ์ž๋ฐ” ์Šคํ”„๋ง๋ถ€ํŠธ๋ฅผ ์‹ค์Šตํ•˜๋˜ ์™€์ค‘ ๋ฐœ์ƒํ•œ boolean ํƒ€์ž…์˜ JSON ๋ณ€ํ™˜์— ๋Œ€ํ•œ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…์ด๋‹ค. 1. ๋ฌธ์ œ ์ƒํ™ฉ dashboard.html ํŒŒ์ผ์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฃผ์‹ ์‹œ์žฅ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.์ด๋•Œ ๊ฑฐ๋ž˜๋‚ด์—ญ์„ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ ์ฃผ์‹์„ ๊ตฌ๋งคํ–ˆ์Œ์—๋„ ํŒ๋งค๋ผ๊ณ  ๋œจ๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. 2. ์›์ธ ์ถ”๋ก ๋ฌธ์ œ์˜ ์›์ธ์€ 1) ๋ฐฑ์—”๋“œ ๊ตฌํ˜„ ๋ฌธ์ œ, 2) ๊ฐ’ ์ „๋‹ฌ ์‹œ ์˜ค๋ฅ˜ ๋ฌธ์ œ, 3) ํ”„๋ก ํŠธ์—”๋“œ ๊ตฌํ˜„ ๋ฌธ์ œ ์ด๋ ‡๊ฒŒ 3๊ฐ€์ง€๋กœ ๊ฐ€์ •ํ•˜๊ณ  ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฌธ์ œ์˜ ์›์ธ์„ ์‚ดํŽด๋ณด์•˜๋‹ค. 1) ๋ฐฑ์—”๋“œ ๊ตฌํ˜„ ๋ฌธ์ œ ํ™•์ธ ๋จผ์ € `StockMarketService.java` ํŒŒ์ผ์—์„œ isPurchase ๊ฐ’ (๊ตฌ๋งค: true, ํŒ๋งค: false)์ด์ •ํ™•ํžˆ ๋“ค์–ด๊ฐ”๋Š”์ง€ ํ™•์ธํ•˜๊ณ ์ž log๋ฅผ ์ฐ์–ด๋ณด์•˜๋‹ค. // ๊ฑฐ๋ž˜ ๋‚ด์—ญ ๊ธฐ๋กStockTransa..

IT/Java 2025.04.01
Copy