Is Spring Bean Thread-Safe?
Last updated
Last updated
Spring Bean์ ๊ธฐ๋ณธ scope๋ ์ฑ๊ธํค์ด๋ฉฐ, ์คํ๋ง์ ๋ฉํฐ ์ฐ๋ ๋ ํ๊ฒฝ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด singleton scope๋ก ์์ฑ๋ bean๋ค์ Thread Safe ํ ๊น?? Spring Container๋ด์์ ํ๋๋ง ์กด์ฌํ๋๋ก ๋ณด์ฅํ์ง๋ง ๊ทธ๊ฒ์ด Thread-Safe ๋ฅผ ๋งํ๋ ๊ฒ์ ์๋๋ฉฐ, ์ด๋ฌํ ๋ถ๋ถ์ ์คํ๋ ค ๊ฐ๋ฐ์๊ฐ ์ง์ ํธ๋ค๋งํด์ค์ผํ๋ค.
์ฑ๊ธํค์ด ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ์๋น์ค ํํ์ ์ค๋ธ์ ํธ๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ์๋ stateless ๋ฐฉ์์ผ๋ก ๋ง๋ค์ด์ ธ์ผํ๋ค. ์ด๋๋ ์ฝ๊ธฐ์ ์ฉ ๊ฐ์ด๋ผ๋ฉด ์ด๊ธฐํ ์์ ์ ์ธ์คํด์ค ๋ณ์์ ์ ์ฅํด๋๊ณ ๊ณต์ ํ๋ ๊ฒ์ ๋ฌธ์ ์๋ค. ๋ง์ฝ ๊ฐ ์์ฒญ์ ๋ํ ์ ๋ณด๋, DB ์๋ฒ์ ๋ฆฌ์์ค๋ก ๋ถํฐ ์์ฑํ ์ ๋ณด๋ ํ๋ผ๋ฏธํฐ์ ๋ก์ปฌ ๋ณ์, ๋ฆฌํด ๊ฐ์ ์ด์ฉํ๋ฉด ๋๋ค. ๋ฉ์๋ ํ๋ผ๋ฏธํฐ๋, ๋ฉ์๋ ์์์ ์์ฑ๋๋ ๋ก์ปฌ ๋ณ์๋ ๋งค๋ฒ ์๋ก์ด ๊ฐ์ ์ ์ฅํ ๋ ๋ฆฝ์ ์ธ ๊ณต๊ฐ์ด ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ ์ฑ๊ธํค์ด๋ผ๊ณ ํด๋ ๋ฌธ์ ์๋ค.
JVM์์ ๊ฐ๊ฐ์ ์ฐ๋ ๋๋ ์์ ์ stack ์์ญ์ ๊ฐ์ง๊ณ ์์ง๋ง heap ์์ญ์ ์ฐ๋ ๋๊ฐ์ ๊ณต์ ๋ฅผ ํ๊ณ ์๋ค.
๊ทธ๋ฌ๋ฏ๋ก Stack ์ด์ธ์ ๊ณต๊ฐ์ ์ ์ฅ๋๋ ๊ฒฝ์ฐ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. ์ฆ, ์คํ๋ง ๋น์ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ฒ ๋ง๋ ๋ค๋ฉด, thread-safeํ์ง ์์ผ๋ฉฐ ์ด๋ฌํ ๋ถ๋ถ์ ๋ํด์ ์ธ์งํ๊ณ , ๊ฐ๋ฐ์ ํด์ผํ๋ค.
๊ทธ๋ ๋ค๋ฉด, ๋ง์ฝ ์์ฃผ ์ฝ์ด์ค๋ ๋์ ํ ๋น๋๋ ๊ฐ์ฒด๋ฅผ singleton๊ณผ ๊ฐ์ด ๋ง๋ค๊ณ ์ถ์ผ๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น??Cache๋ฅผ ์ฌ์ฉํ๋ฉด๋๋ค!
๋ณ์
์ ์ฅ์์ญ
Static ๋ณ์, ์ ์ญ ๋ณ์, ์ฝ๋์์ ์ฌ์ฉ๋๋ class ์ ๋ณด ๋ฑ
Java ๋ฉ๋ชจ๋ฆฌ ์์ญ
์ง์ญ๋ณ์, ํจ์
Stack
๋์ ํ ๋น๋ ๊ฐ์ฒด
Heap