๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅDEV/Java || Spring

์‹ฑ๊ธ€ํ†ค๊ณผ ๋ฌธ์ œ์ 

by bdd 2022. 7. 10.

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์‹ฑ๊ธ€ํ†ค์„ ํ•™์Šตํ•˜๊ฒŒ ๋๊ณ , ๋ฐฑ๊ธฐ์„ ๋‹˜์˜ ๋””์ž์ธํŒจํ„ด ๊ฐ•์˜๋ฅผ ๋“ฃ์œผ๋ฉฐ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ํ•™์Šต ๊ณผ์ •์—์„œ ์ž‘์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์•Œ๋ ค์ฃผ์‹ ๋‹ค๋ฉด ์ฆ‰์‹œ ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 

 

 

 

 

 

 

 

1. ์‹ฑ๊ธ€ํ†ค์„ ์ง์ ‘ ๊ตฌํ˜„ํ–ˆ์„ ๋•Œ์˜ ๋ฌธ์ œ์ 


์‹ฑ๊ธ€ํ†ค์„ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ์ ์ด ์กด์žฌํ•˜๋Š”๋ฐ์š”, ์šฐ์„  ๋™๊ธฐํ™” ๋ฌธ์ œ์— ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ๊ณผ ์‹ฑ๊ธ€ํ†ค์ด ๊นจ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์šฐ์„  ๋™๊ธฐํ™” ๋ฌธ์ œ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์„๋•Œ ์‚ฌ์šฉ์žA์™€ B๊ฐ€ ๋™์‹œ์— ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋ฉด ๋ชจ๋‘ new Setting( )์„ ํ†ตํ•ด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๊ฒ‰๋ณด๊ธฐ์—๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ์ƒ๊ธธ ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋ฆฌํ”Œ๋ ‰์…˜, ๋™์‹œ์ ‘๊ทผ, ์—ญ์ง๋ ฌํ™” ๋“ฑ ์ด๋ฅผ ๊นจํŠธ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ช‡๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

์ด ๊ฒฝ์šฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‹ค๋ฅธ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š”๋ฐ์š”, ๋”ฐ๋ผ์„œ ์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด synchronized ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Holder๋ฅผ ์‚ฌ์šฉํ•ด ๋™์‹œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

 

 

 

 

 

ํ•˜์ง€๋งŒ ์ด ๋˜ํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ฑ๊ธ€ํ†ค์ด ๊นจ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ธ๋ฐ์š”, ๋ฆฌํ”Œ๋ ‰์…˜์„ ์ด์šฉํ•˜๊ฑฐ๋‚˜ ์ง๋ ฌํ™”๋ฅผ ํ†ตํ•ด ๋งŒ๋“  ์‹ฑ๊ธ€ํ†ค์„ ๊นจํŠธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌํ”Œ๋ ‰์…˜์˜ ๊ฒฝ์šฐ ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์—ญ์ง๋ ฌํ™” ๊ณผ์ •์—์„œ๋Š” ๊ฐ์ฒด๊ฐ€ ์ƒˆ๋กœ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. * ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ์ฒด๋ฅผ ๊บผ๋‚ด์™”์„๋•Œ new๋กœ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

๋ฌผ๋ก  readResolve( ) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ญ์ง๋ ฌํ™” ๊ณผ์ •์—์„œ๋„ ๋™๋“ฑ์„ฑ์„ ๋ณด์žฅ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค๋งŒ ๋ฆฌํ”Œ๋ ‰์…˜์˜ ๊ฒฝ์šฐ ์—ฌ์ „ํžˆ ๋ฌธ์ œ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

2. enum๊ณผ ์‹ฑ๊ธ€ํ†ค


์ด๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ๋ฐฉ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด enum์ธ๋ฐ์š”, enum์€ ๋ฆฌํ”Œ๋ ‰์…˜์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ Serializable์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง๋ ฌํ™”์— ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. 

 

 

 

 

 

 

 

 

๋˜ํ•œ enum์€ ์ผ๋ฐ˜ ํด๋ž˜์Šค๊ธฐ ๋•Œ๋ฌธ์— ์ƒํƒœ์™€ ํ–‰์œ„ ๋˜ํ•œ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋กœ๋”ฉ๋˜๋Š” ์‹œ์ ์— ๋‹จ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ๋ณด์žฅ๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ด ๋ง‰ํ˜€์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

3. Conclusion


๋ฌผ๋ก  ์ผ๋ฐ˜์ ์œผ๋กœ enum์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•  ์ผ์€ ๊ทนํžˆ ๋“œ๋ฌผ๊ฒ ์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹ฑ๊ธ€ํ†ค์„ ๊ตฌํ˜„ํ–ˆ์„๋•Œ ์–ด๋–ค ๋ฌธ์ œ์ ์ด ์žˆ๊ณ , ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์•„๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•˜๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋ถ€๋ถ„์„ ์ž˜ ์ˆ™์ง€ํ•ด์„œ ์Šคํ”„๋ง์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ถ”๊ฐ€๋กœ ํ•™์Šตํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 

 

 

 

 

'๐Ÿ–ฅDEV > Java || Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

@Embedded์™€ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž  (0) 2022.07.14
๋ธŒ๋ฆฟ์ง€ ํŒจํ„ด  (0) 2022.07.10
์ผ๊ธ‰ ์ปฌ๋ ‰์…˜๊ณผ ์ฃผ์˜์‚ฌํ•ญ  (0) 2022.02.22
TreeSet  (0) 2022.02.22
์ƒ์ˆ˜ํ’€๊ณผ String  (0) 2022.02.20

๋Œ“๊ธ€