๐ ๋ฐฐ๊ฒฝ
์ปจํธ๋กค๋ฌ ๋งคํ ๋ฉ์๋์์ ์์กด์ฑ ์ฃผ์ ๋ ํ๋์ ์ ๊ทผํ๋๋ฐ, ํด๋น ํ๋๊ฐ null๋ก ๋์ด์ NullPointException์ด ๋จ๋ ์ํฉ์ด ๋ฐ์ํ๋ค.
์์กด์ฑ ์ฃผ์ ๋์ ํ๋๋ ์ปดํฌ๋ํธ ์ค์บ ๋ฒ์์๋ ํฌํจ๋์ด ์์์ผ๋ฉฐ, @Component ์ด๋ ธํ ์ด์ ์ ํตํด ๋น์ผ๋ก ๋ฑ๋กํด ๋์ ์ํฉ์ด๋ผ ๊ฒฝํ์์ผ๋ก ์์กด์ฑ ์ฃผ์ ๋ ํ๋ ๊ฐ์ด null์ธ ๊ฒ์ ์ดํดํ ์ ์์๋ค.
ํด๋น ๋ฌธ์ ์ ๋ํด ์ฌ๊ธฐ์ ๊ธฐ ์ฐพ์๋ณด๋ค๊ฐ ์์ธ์ ์ฐพ๊ณ ํด๊ฒฐํ๊ฒ ๋์๋ค.
๐ ์์ธ
์ด์ด์๊ฒ๋ ์ปจํธ๋กค๋ฌ ๋งคํ ๋ฉ์๋์ ์ ๊ทผ ์ง์์๊ฐ private์ธ ๊ฒ์ด ์์ธ์ด์๋ค.
@PostMapping("/")
@ResponseStatus(HttpStatus.OK)
private ProductResponse.Register register(ProductDto productDto) {
...
}
ํ์๋ ์ต๊ด์ ์ผ๋ก ๋ฉ์๋๋ฅผ ์ ์ํ ๋ private์ผ๋ก ์ง์ ํ๋๋ฐ, ๊ทธ๋ฌ๋ค๊ฐ ํด๋น ๋ถ๋ถ์ ๋์ณค๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
ํด๋น ๋ถ๋ถ์ ์ปดํ์ผ ์ค๋ฅ๋ก ์ก์ ์ ์๊ธฐ ๋๋ฌธ์, ์ด ๋ถ๋ถ์ ๋์น๋ค๋ฉด ์์ธ ํ์ ์ ์ํด ์ฝ์ง์ ํ๊ฒ ๋ ์๋ ์๋ค.
๐ ์ด์
๊ทธ๋ฌ๋ค๊ฐ ๋ฌธ๋ '์ private ๋ฉ์๋๋ ์์กด์ฑ ์ฃผ์ ๋ ํ๋ ๊ฐ์ ์ด์ฉํ ์ ์๋ ๊ฑธ๊น?' ์๋ฌธ์ด ๋ค์๊ณ ๊ด๋ จ ๋ด์ฉ์ ๋ํด ์๊ฒ ๋ ๋ด์ฉ์ ๋ํด ๊ณต์ ํ๊ณ ์ ํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋ง ์ปจํธ๋กค๋ฌ์ ๋งคํ ๋ฉ์๋์ private ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์คํ๋ง ํ๋ ์์ํฌ์ ์๋ ๋ฐฉ์๊ณผ ์์น์ ์ด๊ธ๋๋ค.
๋งคํ ๋ฉ์๋๋ HTTP ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์คํ๋ง MVC์ ์ํด ํธ์ถ๋๋ public ๋ฉ์๋์ด๋ฏ๋ก, ์ด๋ฌํ ๋ฉ์๋๋ ์คํ๋ง์ DispatcherServlet์ ์ํด ๋์ ์ผ๋ก ํธ์ถ๋๋ฉฐ, ์ด๋ฅผ ์ํด ๋ฐ๋์ public ์ ๊ทผ ์ ํ์๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
์ถ๊ฐ์ ์ผ๋ก private ๋ฉ์๋๋ฅผ ๋งคํ ๋ฉ์๋๋ก ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ค์ด ๋ฐ์ํ๋ค๊ณ ํ๋ค.
1. ์ ๊ทผ์ฑ ๋ฌธ์
private ๋ฉ์๋๋ ํด๋์ค ์ธ๋ถ์์ ์ ๊ทผํ ์ ์๋ค. ์คํ๋ง์ DispatcherServlet์ ์ปจํธ๋กค๋ฌ์ public ๋ฉ์๋๋ง ํธ์ถํ ์ ์์ผ๋ฏ๋ก, private ๋ฉ์๋๋ ๋งคํ ๋ฉ์๋๋ก ์ฌ์ฉ๋ ์ ์๋ค.
2. ์คํ๋ง ๋น ๋ผ์ดํ์ฌ์ดํด ์๋ฐ
์คํ๋ง์ ๋น(bean)์ ๋ผ์ดํ์ฌ์ดํด์ ๊ด๋ฆฌํ๋ฉฐ, ์ปจํธ๋กค๋ฌ ๋น์ public ๋ฉ์๋์ ๋ํด ์์ฒญ ๋งคํ, ์ธํฐ์ ํฐ ์ฒ๋ฆฌ, AOP ํ๋ฝ์ ๋ฑ์ ์ ์ฉํ๋ค. private ๋ฉ์๋๋ ์ด๋ฌํ ์ฒ๋ฆฌ๋ฅผ ๋ฐ์ ์ ์์ด, ์คํ๋ง์ ๊ธฐ๋ฅ์ ์ ๋๋ก ํ์ฉํ ์ ์๋ค.
3. ํ๋ ์์ํฌ ๊ท์ฝ ์๋ฐ
์คํ๋ง MVC๋ ํน์ ๊ท์ฝ์ ๋ฐ๋ฅธ๋ค. ์๋ฅผ ๋ค์ด, @RequestMapping์ด๋ @GetMapping, @PostMapping ๋ฑ์ ์ ๋ํ ์ด์ ์ ์ฌ์ฉํ์ฌ HTTP ์์ฒญ์ ์ฒ๋ฆฌํ ๋ฉ์๋๋ฅผ ์ง์ ํ๋ค. ์ด๋ฌํ ์ ๋ํ ์ด์ ์ public ๋ฉ์๋์๋ง ์ ์ฉ๋์ด์ผ ํ๋ฉฐ, private ๋ฉ์๋์ ์ ์ฉํ๋ ๊ฒ์ ์คํ๋ง MVC์ ์ค๊ณ ์์น์ ๋ฐํ๋ค.
4. ๋ฆฌํ๋ ์ ์ ํ
์คํ๋ง์ ๋ด๋ถ์ ์ผ๋ก ๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ์ฌ ์ปจํธ๋กค๋ฌ์ ๋ฉ์๋๋ฅผ ์ฐพ๊ณ ํธ์ถํ๋ค. private ๋ฉ์๋๋ ๋ฆฌํ๋ ์ ์ ํตํด์๋ ์ผ๋ฐ์ ์ผ๋ก ์ ๊ทผํ ์ ์์ผ๋ฏ๋ก, ์คํ๋ง์ด ํด๋น ๋ฉ์๋๋ฅผ ๋งคํ ๋ฉ์๋๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.
๐ ๊ฒฐ๋ก
์คํ๋ง ์ปจํธ๋กค๋ฌ์์๋ ๋งคํ ๋ฉ์๋๋ฅผ ํญ์ public์ผ๋ก ์ ์ธํด์ผ ํ๋ฉฐ, private ๋ฉ์๋๋ ๋งคํ ๋ฉ์๋๋ก ์ฌ์ฉ๋์ด์๋ ์ ๋๋ค. ์์กด์ฑ ์ฃผ์ ๋ ํ๋๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด, ํด๋น ํ๋๊ฐ ์ด๊ธฐํ๋๊ณ ๊ด๋ฆฌ๋๋ public ๋ฉ์๋ ๋ด์์ ์ฌ์ฉํด์ผ ํ๋ค.
๋๊ธ