์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- ํญํด99์์งํ๊ธฐ #ํญํด99 #๋ถํธ์บ ํ์ถ์ฒ
- ๋ถํธ์คํธ๋ฉ #Bootstrap #์น๊ฐ๋ฐ์ฒซ๊ฑธ์ #์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ
- ์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ #์ฝ๋ฉ #jQuery #Ajax
- #๋ด์ผ๋ฐฐ์๋จ #์ฝ๋ฉํ๋ก์ ํธ #๊ตญ๋น์ง์ #๋ด์ผ๋ฐฐ์์นด๋ #์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ
- ์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ #ํฌ๋กค๋ง #์คํฌ๋ํ
- Today
- Total
์ด๋ชจ์ ๋ชจ
request scope์ provider, proxy ๋ณธ๋ฌธ
๐ฆ bean์ scope
- singleton scope : ์คํ๋ง ์ปจํ ์ด๋ ์์ฑ๋ถํฐ ์๋ฉธ๊น์ง ์ด์ด์ง๋ ๊ธด ์ค์ฝํ.
- prototype scope : ํ๋กํ ํ์
๋น์ ์์ฑ๊ณผ ์์กด๊ด๊ณ ์ฃผ์
๊น์ง๋ง ๋๋ ๊ด๋ฆฌํ์ง ์๋ ์งง์ ๋ฒ์์ ์ค์ฝํ
- prototype scope๋ ์์ฃผ ์ฐ์ง๋ ์๋๋ค๊ณ ํ๋ค. ๋ค๋ง ์ฑ๊ธํค ๋น๊ณผ ํจ๊ป ์ฌ์ฉํ๊ฒ ๋ ์ ์ฃผ์ํด์ผ ํ๋ค.
- ์ฑ๊ธํค์ ์ทจํ๋ ๊ฐ์ฒด๊ฐ prototype scope ๋ฅผ ๊ฐ๋ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ๊ฒฝ์ฐ, ์๋๋ผ๋ฉด ๋งค ์ฌ์ฉ์๋ง๋ค ์๋กญ๊ฒ ์์ฑ๋ ๋ฒํ(๊ทธ๋ ๊ฒ ์๋ํ์ ๋ฒํ) prototype scope์ ๊ฐ์ฒด๊ฐ ์ฑ๊ธํค ๋น์ ์ํด ๋ถ์กํ ์ฑ๋ก ๊ณ์ ์ด์์๊ฒ ๋ ์ ์๋ค๋ ๊ฒ.
- ๊ทธ๋ ๊ฒ ๋๋ฉด ๊ณ์ ์๋ก ์์ฑ๋๊ธฐ๋ฅผ ๊ธฐ๋ํ๋ prototype ๋น์ด ์ฑ๊ธํค๊ณผ ํจ๊ป ์ด์๋จ์ ๊ณ์ ํ๋์ ๊ฐ์ฒด๋ก ์ฌ์ฉ/๊ณต์ ๋ ์ ์์ด ์๋์ ๋ค๋ฅธ ์๋์ด ์ผ์ด๋ ์ ์๋ค.
- ์ด๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด?
- ์ง์ ํ์ํ ๋ ์์กด๊ด๊ณ๋ฅผ ์ฐพ์ ์ ์๋ Dependency Lookup(DL)์ ์ํํด์ผ ํ๋ค.
- DL์ 2 ๊ฐ์ง ๋ฐฉ๋ฒ์:
- ์คํ๋ง์ด ์ ๊ณตํ๋ ObjectProvider
- ์๋ฐ ํ์ค javax.inject.Provider
- web scope
- request: ์น ์์ฒญ์ด ๋ค์ด์ค๊ณ ๋๊ฐ๋ ๋์ ์ ์ง
- session: ์น ์ธ์ ์์ฑ-์ข ๋ฃ๊น์ง ์ ์ง
- application: ์น์ servletContext์ ๊ฐ์ ๋ฒ์๋ก ์ ์ง
๐ผ web scope ์ ์์กด๊ด๊ณ๋ฅผ ๊ฐ๋ singleton bean์ด ์์ ๋ ๋ฌธ์ (?)
Web scope์ ์ํ๋ request scope๋ฅผ ๊ฐ๋ ๊ฐ์ฒด๋ผ๋ฉด, ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์์ด์ผ๋ง ์์ฑ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์คํ๋ง ์ปจํ ์ด๋ ์์ฑ์ ๋น์ด ๋ฑ๋ก๋ ๋, web scope๋ฅผ ๊ฐ๋ ๊ฐ์ฒด์ ๋ํด ์์กด๊ด๊ณ๋ฅผ ๊ฐ๋ ๋น์ด ์๋ค๋ฉด?
์๋ฌด ์กฐ์น๋ฅผ ํ์ง ์๋๋ค๋ฉด ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ( request์ด์ ์ด๋ผ ์์ฑ๋ ์ ์๋ ์์ด๋ฅผ ์์กดํ๊ธฐ ๋๋ฌธ์ ๋ฐ์)
No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request.
๐ฆ ํด๊ฒฐ ๋ฐฉ๋ฒ
(1) ObjectProvider ์ฌ์ฉ
- request scope๋ฅผ ๊ฐ๋ ๋น ์์ฒด๋ฅผ ์์ฑ์์ ์์กด๊ด๊ณ ์ฃผ์ ์ผ๋ก ๋ฃ์ด์ฃผ์ง ์๊ณ , request scope๋ฅผ ๊ฐ๋ ๊ทธ ๋น์ ์ฌ์ฉํ๋ ์์ ์์ ํธ์ถํ์ฌ ์์ฑํ ์ ์๋๋ก ํ๋ ๊ฒ.
- ํ์ ๋ฉค๋ฒ ๋ณ์๋ก request scope์ ๊ฐ์ฒด ์์ฒด๊ฐ ์๋๋ผ, ๊ทธ ๊ฐ์ฒด์ ๋ํ ObjectProvider๋ฅผ ๋ง๋ จํด๋๊ณ ,
- ํ์ํ ์์ ์ ๊ทธ Provider๋ก๋ถํฐ getObject()ํด์ ์ฌ์ฉํ๋ค.
(2) Proxy ์ฌ์ฉ ** ๋ ๊ฐ๊ฒฐ
-
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
- request scope๋ฅผ ๊ฐ๋ ํด๋์ค์ ์์ ๊ฐ์ proxyMode๋ฅผ ์ค์ ํด๋๋ค.
- ์ด๋ ๊ฒ ๋๋ฉด, ์์ง request๊ฐ ์ด๋ฃจ์ด์ง์ง ์์ ์ง์ง ๋น์ด ์์ฑ๋์ง ์์์์๋,
- ๋ค๋ฅธ ๋น์์ ์ด request scope์ ๋น์ ์์กดํ๋ฉด์ ์์ฑํ๊ฑฐ๋ ํ ๋ ๊ฐ์ง ๋น์ ์์กดํด์ ์ผ๋จ ์์ฑ๋๋ค.
- ๋์ค์ ์ง์ง๋ก ํ์ํ ๋๋ ๊ฐ์ง๊ฐ ์๋ ์ง์ง๋ก ์ฐพ์์์ ์์ํด์ค ์ ์๋ค.
'coding > Java, Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JPA - ์์์ฑ ์ปจํ ์คํธ (0) | 2022.02.21 |
---|---|
์ ์ฐจ/๊ฐ์ฒด/๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ (0) | 2022.02.21 |
bean ๋ฑ๋ก์ ์๋/์๋ ์ ํ ๊ธฐ์ค (0) | 2022.02.17 |
์กฐํ๋ bean์ด 2 ๊ฐ ์ด์์ผ ๊ฒฝ์ฐ ํด๊ฒฐ๋ฐฉ๋ฒ (0) | 2022.02.16 |
์์กด๊ด๊ณ ์๋ ์ฃผ์ (0) | 2022.02.16 |