๋ง์ผ ๊ฒฐ๊ณผ๊ฐ์ด ๊ฐ์์ ๋ค๋ฅด๊ฒ ๋์จ๋ค๋ฉด,
AppConfig์ MemberRepository ์์ static์ด ๋ถ์ด์๋์ง ํ์ธํ๋ผ!
Q. ์ static์ ์ฐ๋ฉด ์ธ์คํด์ค ๊ฐ์ด ๋ค๋ฅด๊ฒ ํ ๋น๋ ๊น?
A. static์ ๋ถ์ด๊ฒ ๋๋ฉด spring์ bean ๋ผ์ดํ ์ฌ์ดํด ๊ด๋ฆฌ๊ฐ ์ ์์ ์ผ๋ก ์ด๋ฃจ์ด์ง์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ ํ์ ์ bean์ด ์ฌ๋ฌ ์ธ์คํด์ค๋ก ์์ฑ๋๊ฒ ๋๋ค.
๐๏ธ๐จ๏ธ static ์ด๋?
1. ํด๋์ค ๋ ๋ฒจ์ ๋ณ์๋ ๋ฉ์๋์ ์ฌ์ฉ๋๋ฉฐ, ์ด๋ฅผ ํตํด ๊ฐ์ฒด ์์ฑ ์์ด ํด๋น ๋ณ์๋ ๋ฉ์๋์ ์ ๊ทผํ ์ ์์ต๋๋ค.
2. static ๋ฉค๋ฒ๋ ํด๋์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ๋ ๋จ ํ ๋ฒ๋ง ์์ฑ๋๋ฉฐ, ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๊ณต์ ํ๋ ๊ณตํต์ ์์์ด ๋ฉ๋๋ค.
3. ํด๋์ค ๋จ์๋ก ๊ด๋ฆฌ๋์ด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ด๊ณ , ๊ฐ์ฒด ์์ฑ ์ค๋ฒํค๋ ์์ด ์ ๊ทผํ ์ ์๋ค.
๐๏ธ๐จ๏ธ static์ด spring์ ๋ผ์ดํ ์ฌ์ดํด์ ์ด๋ป๊ฒ ๊ผฌ๋ ๊ฒ์ธ๊ฐ?
(์ ํํ๊ฒ ์ดํดํ ๊ฑด ์๋๋๋ค๐ฅฒ)
1. ์๋ spring์ ๋ผ์ดํ ์ฌ์ดํด์ @Configuration ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ @bean ๋ฉ์๋๋ฅผ ํธ์ถํด์ผํ๋ค.
2. ๊ทธ๋ฐ๋ฐ static์ bean ๋ฉ์๋์ ์ ์ํ๊ฒ ๋๋ฉด, static์ ํน์ฑ์ธ ๊ฐ์ฒด ์์ฑ ์์ด ํด๋น ๋ณ์๋ ๋ฉ์๋์ ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ 1๋ฒ์ ์ฌ์ดํด์ ๋ฐ๋ผ๊ฐ์ง ์๊ฒ ๋๋ค.
3. ๊ทธ๋ ๊ธฐ์ ๋ฉ์๋๊ฐ ํด๋์ค ๋ ๋ฒจ์์ ํธ์ถ๋์ด(static์ ํน์ง) @Configuration์ ์ธ์คํด์ค ์์ฑ ์์ด๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋๊ณ spring์ ๋ผ์ดํ ์ฌ์ดํด์ ๊นจ๊ฒ ๋ง๋ค์ด ์ฑ๊ธํค ๋ณด์ฅ์ ํด์ฃผ์ง ๋ชปํ๊ฒ ๋๋ค.
๐๏ธ๐จ๏ธ static๊ณผ spring bean์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ?
static | bean | |
๊ณตํต์ | • ๊ณต์ ๊ฐ ๊ฐ๋ฅํ๋ค = static์ ํด๋์ค์ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ๊ณต์ / bean์ ์คํ๋ง์ปจํ
์ด๋๋ฅผ ํตํด ๊ณต์ • (์ด๋์๋ ์ง ๊ทธ ์ธ์คํด์ค์ ์ ๊ทผํ ์ ์๋) ์ ์ญ์ ์ธ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. • ๋ผ์ดํ์ฌ์ดํด์ด ์กด์ฌํ๋ค = static์ ํ๋ก๊ทธ๋จ ์์๋ถํฐ ๋๋ ๋๊น์ง / bean์ ์คํ๋ง ์ปจํ ์ด๋์ ์ํด |
|
๋ค๋ฅธ์ | • static์ ์์กด์ฑ ์ฃผ์
์ด ์๋๋ค. bean์ ์์กด์ฑ ์ฃผ์ ์ด ๊ฐ๋ฅํ๋ค. • static์ ์ฃผ๋ก ์ด๋ค ์ํ๋ ๋์์ ๊ณต์ ํ๊ธฐ ์ํด bean์ ๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ, ์์กด์ฑ์ฃผ์ , ํจ์จ์ ์ธ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉํ๋ค. • static์ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ ์ธ bean์ ์คํ๋ง ์ปจํ ์ด๋์ ์ํด ๊ด๋ฆฌ. |
- static๊ณผ bean์ ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์ถ์ฒ