๋ชฉ์ฐจ

spring์์ ์์กด์ฑ ์ฃผ์ ์ ์์ฃผ ๋ฐ์ํ๋ ์ค์์ด๋ค.(๋๋ค, ๋ด๊ฐ ๊ทธ๋ ๋ค.)

์ ์ฝ๋์์ ์ด๋๊ฐ ์๋ชป ๋์์๊น? ๋ฌด์ ๋๋ฌธ์ NPE๊ฐ ๋ฐ์ํ๋ ๊ฒ์ผ๊น?
์ฝ์์์ ์น์ ํ๊ฒ ๋ผ์ธ๊น์ง ์๋ ค์ฃผ๊ณ ์๋ค.

31๋ฒ ์งธ ๋ผ์ธ์ผ๋ก ๊ฐ๋ณด์
๊ทธ๋ฅ board ํ ์ด๋ธ์ ์๋ ๋ฆฌ์คํธ๋ฅผ ํ์ด์งํด์ ๊ฐ์ ธ์ค๋๊ฒ ์ ๋ถ๋ค.
์์ธ์ ๋ชฐ๋์ ๋ DB์์ ๊ฐ์ ธ์ค๋๊ฒ null์ธ๊ฐ? ์ด๋ฐ ์๊ฐ์ ํ์๋๋ฐ..
ํ์ง๋ง ์๋ ์ฝ๋์์๋ ์์ฑํ list๋ฅผ ์กฐ์ํ๋ ์ผ์ด ์ ํ ์๋ค.(list์์ getํด์ ๋ญ ๊ฐ์ ธ์จ๋ค๊ฑฐ๋)
๊ทผ๋ฐ ์ ๋ํฌ์ธํฐ์ผ๊น?

๋๋ฒ๊ฑฐ๋ก ์ฐ์ด๋ณด์ boardService๊ฐ null์ด๋ค.
์ด๋์ ๊ฐ์ฒด๊ฐ ์์ฑ ์๋๊ฑฐ๋ค.

BoardController์์ BoardService๋ผ๋ ๋์ ์์ฑ์ ์ฃผ์ ํด์ ์ฐ๋ ค๊ณ ํ๋๋ฐ ์ด ๊ฐ์ฒด๊ฐ null์ด๋..
๋ฒ์ธ์ ์๋๋ค.
์ปจํธ๋กค๋ฌ ํด๋์ค๋ ๋ฒจ์ @RequiredArgsConstructor ์ ๋ ธํ ์ด์ ์ ๋ถ์๋๋ฐ boardService์ final์ ๋ถ์ด์ง ์์์ ๊ทธ๋ ๋ค.
@RequiredArgsConstructor์ final์ด๋ @NotNull์ด ๋ถ์ ํ๋๋ฅผ ์์ฑ์ ๋ฐฉ์์ผ๋ก ์ฃผ์ ์์ผ์ฃผ๋๋ฐ ํด๋น ํ๋์ final์ด ์๋ค.
์ฝ๋ฉํ๋ฉด์ ์ค์ํ ๊ฒ์ด๋ค.

์๋์ฒ๋ผ final์ ๋ถ์ด๊ณ ๋ค์ ๋๋ฒ๊ฑฐ๋ก ์ฐ์ด๋ณด๋ฉด ๊ฐ์ฒด๊ฐ null์ด ์๋๊ฑธ ํ์ธ ํ ์ ์๋ค.


๋๊ธ