๋ฆฌํŒฉํ„ฐ๋ง 4

[Java] Enum ํ™œ์šฉ ๋ฐ ๊ฐœ์„ 

์ง€๊ธˆ๊นŒ์ง€ Enum๋ฅผ ๊ฝค๋‚˜ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์™”์ง€๋งŒ, ๊ทธ์ € ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ’์„ ์ œํ•œํ•˜๊ณ  ์ฝ”๋“œ ๋‚ด์˜ ๋งค์ง ๋„˜๋ฒ„๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ์šฉ๋„ ์ •๋„๋กœ๋งŒ ์ƒ๊ฐํ•˜๊ณ  ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ์ตœ๊ทผ ์ •์  ํŽ™ํ† ๋ฆฌ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ๊ณต๋ถ€ ์ค‘, ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค์–ด์ง์„ ๋ณด์žฅํ•œ๋‹ค๋Š” ์ธก๋ฉด์—์„œ Enum์— ๋Œ€ํ•œ ์–ธ๊ธ‰์ด ์žˆ์—ˆ๋‹ค. ์ด์— ์ด๋ฒˆ ๊ธฐํšŒ์— Enum์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ณ  ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์˜ Enum ํŒŒํŠธ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ„ฐ๋งํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.    โ˜‘๏ธ Enum ํ™œ์šฉ1. ์ƒํƒœ์™€ ํ–‰์œ„๋ฅผ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌ์ด๋Š” Enum ๋ฆฌํŒฉํ„ฐ๋ง์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋œ ๊ฐ€์žฅ ํฐ ์›์ธ์ด๋‹ค. ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์˜ ์•Œ๋ฆผ ํŒŒํŠธ๋Š” ๋ฉ”์‹œ์ง€ Content๋ฅผ Dto์— ํฌํ•จ์‹œํ‚ค๊ณ ์ž Dto์˜ ์ƒ์„ฑ์ž์—์„œ NotificationTopic์ด๋ผ๋Š” Enum ๊ฐ’์— ๋”ฐ๋ผ Content๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์—ˆ๋‹ค.ํ•˜..

JAVA 2024.07.09

[Java] NULL ๊ฐœ์„  ๋ฆฌํŒฉํ„ฐ๋ง

์ด์ „ ๊ธ€์—์„œ ๋‹ค๋ค˜๋“ฏ์ด NULL์€ ์ˆ˜ ๋งŽ์€ ๋ฌธ์ œ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” NULL์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‹ค์ œ๋กœ ๋ฆฌํŒฉํ„ฐ๋ง ๊ณผ์ •์—์„œ ์‚ฌ์šฉํ•œ ๋ช‡๊ฐ€์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ธฐ๋กํ•˜๊ณ ์ž ํ•œ๋‹ค.  1๏ธโƒฃ DB ์ •๊ทœํ™”์™€ ์ด๋กœ ์ธํ•œ ๋กœ์ง ๋‹จ์ˆœํ™” ์ ์ ˆํ•œ ๋‹จ๊ณ„๊นŒ์ง€์˜ ์ •๊ทœํ™”๋ฅผ ์ง„ํ–‰ํ•˜์ง€ ์•Š์„ ์‹œ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์ฑ…์ž„์„ ๊ฐ€์ง€๊ฒŒ ๋˜๊ณ  ์ด๋Š” SRP๋ฅผ ํ•ด์น˜๋Š” ์ฃผ ์›์ธ์ด ๋œ๋‹ค. ๊ธฐ์กด DB ๊ตฌ์กฐ๋Š” ์œ ์ €๊ฐ€ ํŒ€์— ํŒ€์› ์‹ ์ฒญ์„ ํ•˜๋Š” ์‹ ์ฒญ ๋‚ด์—ญ๊ณผ ํŒ€์ด ๋˜ ๋‹ค๋ฅธ ํŒ€์— ๋ฐฐํ‹€ ์‹ ์ฒญ์„ํ•˜๋Š” ์‹ ์ฒญ ๋‚ด์—ญ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ์ €์žฅํ–ˆ๋‹ค. ์ฒ˜์Œ ์„ค๊ณ„ ๋‹น์‹œ ์ด ๋‘˜์€ ์‹ ์ฒญ ๋‚ด์—ญ์ด๋ผ๋Š” ๊ณตํ†ต ์†์„ฑ์œผ๋กœ ๋ฌถ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ณตํ†ต๋œ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๊ฐ€ ๋งŽ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค๊ณ„ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ์ˆ˜ ๋งŽ์€ NULL๋กœ ์ธํ•ด ๊ฐ์ฒด ์ง€ํ–ฅ๊ณผ ์ •๊ทœํ™”, ์œ ..

JAVA 2024.03.27

[Spring] Private ๋ฉ”์„œ๋“œ ํ…Œ์ŠคํŠธ์™€ ๋น„์ง€๋‹ˆ์Šค ๊ณ„์ธต ๋„์ž…

์ด ๊ธ€์€ ๊ธฐ์กด Controller, Service, Repository๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋˜ 3 ๊ณ„์ธต ๊ตฌ์กฐ์— Business ๊ณ„์ธต์„ ๋„์ž…ํ•˜๊ฒŒ ๋œ ๊ณผ์ •๊ณผ ๊ฐœ๋…, ๋ณธ์ธ์ด ์ƒ๊ฐํ•˜๋Š” ์žฅ์ ์— ๋Œ€ํ•ด ๊ธฐ์ˆ ๋˜์–ด ์žˆ๋‹ค.  โ˜‘๏ธ ๋„์ž… ๊ณผ์ • ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ๋„์ž…ํ•˜๊ณ ์ž ์ด์— ๋Œ€ํ•ด ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค. ๊ณต๋ถ€ ์ค‘ Private ๋ฉ”์„œ๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ด๋ฅผ ์ง€์–‘ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ๋‹ค๋ฃฌ ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด ๋จผ์ € ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘ ๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฆฌํ”Œ๋ ‰์…˜์€ ๋Ÿฐํƒ€์ž„์— ๋™์ž‘ํ•˜๋Š” ๊ธฐ์ˆ ๋กœ, ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๋™์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. ์ด ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“  Private ๋ฉ”์„œ๋“œ ํ…Œ์ŠคํŠธ์—๋Š” 2๊ฐ€์ง€ ๋‹จ์ ์ด ์žˆ๋‹ค. 1๏ธโƒฃ P..

SPRING 2024.03.10

[Spring] Spring Event๋ฅผ ์ด์šฉํ•œ ๋ฆฌํŒฉํ„ฐ๋ง

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

SPRING 2024.03.02