2022. 8. 4. 11:31ใSpring
Spring์์ ์ ๊ณตํ๋ RequestContextHolder๋ฅผ ์ด์ฉํ๋ฉด HttpServletRequest ์ ์ง์ ์ ๊ทผํ ์ ์๋๋ก ๋์์ฃผ๋ ์ญํ ์ ํ๋ค.
์ด๋ spring 2.x ๋ถํฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ผ๋ก ์ด๋ฅผ ํ์ฉํ๋ฉด HttpServletRequest ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ด๋ฅผ ๋ฉ์๋ ํ๋ผ๋ฏธํฐ๋ก ์ฐ์ด์ด ๋๊ฒจ๋ฐ์ ํ์๊ฐ ์๋ค.
์๋ service๋จ์์ HttpServletRequest ๋ฅผ ์ฐธ์กฐํด์ผํ๋ค๋ฉด ๋ฉ์๋ ํ๋ผ๋ฏธํฐ๋ก ๋๊ฒจ๋ฐ์์ด์ผ ํ๋๋ฐ
RequestContextHolder๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ํ๋ผ๋ฏธํฐ๋ก ๋๊ธธ ํ์ ์์ด ํ์ํ ๊ณณ์์ ์ฐธ์กฐํ ์ ์๋ค.
RequestContextHolder๋ฅผ ์ด์ฉํ์ฌ request ๊ฐ์ฒด๋ฅผ service ๊น์ง ์ ๋ฌํ์ง ์๊ณ ์ฌ์ฉํ ์ ์๊ณ
Util ํด๋์ค์๋ ์ธ์ ๊ฐ์ ์ ๊ทผํ ์ ์๋ค.
Objects.requireNonNull
: Objects ํด๋์ค์์ ์ ๊ณตํ๋ null ์ฒดํฌ๋ฅผ ์ํ ๋ฉ์๋
ํ๋ผ๋ฏธํฐ๋ก ์ ๋ ฅ๋ ๊ฐ์ด null ์ด๋ฉด NPE๊ฐ ๋ฐ์ํ๊ณ ๊ทธ๋ ์ง ์๋ค๋ฉด ์ ๋ ฅ๊ฐ์ ๊ทธ๋๋ก ๋ฐํํ๋ ๋ฉ์๋์ด๋ค.
-> Objects.requireNonNull ์ฌ์ฉํ๋ ์ด์
null ์ฐธ์กฐํด ์์ธ ๋ฐ์์ด๋ requireNonNull์ null ์ด ๋ค์ด๊ฐ๋ ๋๊ฐ์ด NPE๊ฐ ๋ฐ์ํ๋ค.
๊ทธ๋ฐ๋ฐ ์ ์ฌ์ฉํ๋๊ฐ?
: ์ด์ ๋ ๋น ๋ฅธ ์คํจ (Fail-Fast) ๋๋ฌธ์ด๋ค. ๋๋ฒ๊น ์ ์ฝ๊ฒ ํ๊ธฐ ์ํด์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ฆ๊ฐ์ ์ผ๋ก ๊ฐ์งํ ํ์๊ฐ ์๋ค. ๋ฌธ์ ์ ์์ธ๊ณผ ๋ฌธ์ ์ ๋ฐ์ ์ง์ ์ด ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์๋ค๋ฉด ๋๋ฒ๊น ํ๊ธฐ ํ๋ค๊ธฐ ๋๋ฌธ์ด๋ค.
๋ ๋ค๋ฅธ ์ด์ ๋ก๋ ๋ช ์์ฑ๊ณผ ๊ฐ๋ ์ฑ ๋๋ฌธ์ด๋ค. requireNonnull์ ์ฌ์ฉํ ์ฝ๋๋ ์๋์ผ๋ก null ์ฒดํฌํ ์ฝ๋๋ณด๋ค ๊ฐ๋ ์ฑ์ด ์ข๊ณ ๋ช ์์ ์์ ์ ์ ์๋ค.
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง ์ปจํธ๋กค๋ฌ ํ๋ผ๋ฏธํฐ์ ํ๊ธ ๊นจ์ง ํ์ ํด๊ฒฐ ๋ฐฉ๋ฒ (0) | 2023.05.09 |
---|---|
Spring์์ ์ฌ์ฉํ๋ RestTemplate , OkHttp, REST API ์์ ์ฌ์ดํธ (0) | 2022.06.28 |
Jackson ObjectMapper๋? (0) | 2022.06.22 |
[Spring] @Async๋ฅผ ํ์ฉํ ๋น๋๊ธฐ ๋ฉ์๋ ๋ง๋ค๊ธฐ (0) | 2022.06.20 |
Spring @RestController ๋ฅผ ์ด์ฉํ ๊ฐ๋จํ ๊ฒ์ํ, ํ์ด์ง (0) | 2021.12.06 |