๐ง Http ์์ฒญ ํค๋ ์กฐํ ์์๋ฅผ ํตํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpMethod; import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.RequestHeader; import org.springframe..
๐ง @RequestMapping ์์ฒญ๋ url์ ๋ํด์ ๋งคํํ๊ธฐ ์ํ์ฌ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. @RequestMapping("/hello-basic") public String helloBasic() { return "ok"; } @RequestMapping์ ์ฒ๋ฆฌํ๋ HandlerMapping๊ณผ HandlerAdapter๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. RequestMappingHandlerMapping RequestMappingHandlerAdapter ๐ง URL ๊ฒฝ๋ก์ ๋ํ ๋งคํ @RequestMapping("/hello") /hello ๋ก URL ํธ์ถ์ด ์ค๋ฉด ์ด ๋ฉ์๋๊ฐ ์คํ๋๋๋ก ๋งคํํฉ๋๋ค. ๋๋ถ๋ถ์ ์์ฑ์ ๋ฐฐ์ด๋ก ์ ๊ณตํ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ๋ค์ค ์ค์ ๋ ๊ฐ๋ฅํฉ๋๋ค. {"/hello", "/hi..
๐ง ์๋ก ์ด์ ๊ธ์์ ์คํ๋ง MVC์ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ตํ๊ฒ ์ดํด๋ณด์์ต๋๋ค. ์ด๋ HandlerMapping๊ณผ HandlerAdapter๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ ์ ์์๋๋ฐ, ์ด๋ฒ์๋ ์ด์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๐ง Controller๊ฐ ํธ์ถ๋๊ธฐ ์ํ ์กฐ๊ฑด ์ ํฌ๊ฐ ์์ฑํ๋ Controller(ํน์ Handler)๊ฐ ํธ์ถ๋๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ ๋ ๊ฐ์ง ์กฐ๊ฑด์ด ๋ง์กฑ๋์ด์ผ ํฉ๋๋ค. 1. ์์ฒญ(Request) URL์ด ๋ค์ด์ค๋ฉด, ํด๋น ์์ฒญ์ ๋์๋๋ Controller(Handler)๋ฅผ HandlerMapping ์์์ ์ฐพ์ ์ ์์ด์ผ ํฉ๋๋ค. 2. HandlerMapping์ ํตํด ์ฐพ์ Controller(Handler)๋ฅผ ์คํํ ์ ์๋ HandlerAdapter๊ฐ ํ์ํฉ๋๋ค. ์คํ ํ๋ฆ์ ๋ค์๊ณผ ..
์คํ๋ง ์ํ๋ฆฌํฐ๋ก ์ฝ๋ ์์ฑํ๋ ์ค์, ์ฝ๋์ ๋ฌธ์ ์ ์ด ์์๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ๋ค. (์ ํํ๋ ๋ฐ๊ฒฌํด์ฃผ์ ๊ฒ) ๋ฌธ์ ๊ฐ ๋๋ ์ฝ๋๋ฅผ ๋ณด์. @Service @RequiredArgsConstructor public class LoadUserService { private final RestTemplate restTemplate = new RestTemplate(); private SocialLoadStrategy socialLoadStrategy;//์ถ์ ํด๋์ค, ๋ก๊ทธ์ธ์ ์งํํ๋ ์ฌ์ดํธ๋ ๋ฐ๋ผ ๋ฌ๋ผ์ง public OAuth2UserDetails getOAuth2UserDetails(AccessTokenSocialTypeToken authentication) { SocialType socialType = aut..
์ฒ์ ํด๋น ์ฝ๋ ์์ฑํ ๋, ์ ๋ง ์ค๋ ์๊ฐ์ด ๊ฑธ๋ ธ์ต๋๋ค ๊ด๋ จ๋ ์๋ฃ๊ฐ ์๋ฒ์ฌ์ด๋ ๋๋๋ง์ ํตํด ํ์๊ฐ์
์ ์งํํ๋ ์์๋ฐ์ ์์๊ณ , REST API๋ฅผ ์ฌ์ฉํ์ฌ ํต์ ํ ๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋์ง์ ๋ํ ์๋ฃ๊ฐ ์์ด์ ๋๊ฒ ๊ณ ์ ๋ง์ดํ์์ต๋๋ค. ์ ์ ๊ฐ์ ์ฌ๋์ด ๋ง์๊น๋ด ์ด๋ ๊ฒ ์ง๊ธ๊น์ง ํ๋ ๊ฒ๋ค์ ์จ๋ณด๊ฒ ์ต๋๋ค. ๋์ ์๋ฆฌ ํ๋ก ํธ์๋๋ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๊ณ (๋ฆฌ์กํธ๊ฐ ์๋์ด๋ ์๊ด์์ต๋๋ค), ๋ฐฑ์๋๋ก๋ ์คํ๋ง์ ์ฌ์ฉํ์ฌ ๋ก๊ทธ์ธ์ ์งํํ ๊ฒ์
๋๋ค. ๋ฆฌ์กํธ๋ ํ๋๋ฒ์ ๋ชจ๋ฅด๊ธฐ์ ๋์ด๊ฐ๊ณ , ๋ฐฑ์๋์ ๊ตฌ์ฑ ์ฝ๋๋ง ์์ฑํ๊ฒ ์ต๋๋ค. ์ฐ์ ํ๋ก ํธ์์ ์์
๋ก๊ทธ์ธ API๋ฅผ ์ฌ์ฉํ์ฌ AccessToken์ ๋ฐ์์ค๋ ์ฝ๋๊น์ง๋ ์์ฑํด ์ฃผ์ด์ผ ํฉ๋๋ค. ํ๋ก ํธ์์๋ AccessToken์ ๋ฐ๊ธ๋ฐ์ ์๋ฒ์ ์ ๋ฌํด์ฃผ๊ณ , ์๋ฒ์์๋ ํด๋น..
์์ ๋ถํฐ @Transaction์ด ์ค์ฒฉ๋์ ์ฌ์ฉ๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น..?? ๋ผ๊ณ ๋ช๋ฒ ์๊ฐํด ๋ณด์๊ณ , ๊ทธ๋ ๋์ถฉ ์ดํด๋ณด๊ณ ๋ง์์๋๋ฐ, ์ค๋ ์ด์ฉ๋ค๊ฐ ์ด๊ฒ ๊ด๋ จํด์ ์กฐ๊ธ ํฅ๋ฏธ๋ก์ด ๋ถ๋ถ์ด ์๊ฒจ์ (์ฌ์ค์ ์ข
ํ๋์ด ์ธ๊ธํด์ฃผ์ ๊ฑฐ๊ธด ํ์ง๋ง) ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. ์ฌ์ค ์ด ๊ธ์ ์ดํ ๋ค๋ฃฐ (์ค์ฒฉ๋) ํธ๋์ญ์
์์์ ์์ธ์ฒ๋ฆฌ์ ๋ํด ๊ธ์ ์์ ํ ๋ ์๊ณ ์์ด์ผ ํ ๋ด์ฉ์ด๊ธฐ์ ๊ฐ๋จํ๊ฒ๋ง ๋ค๋ฃจ๊ณ ๋ค์ ๊ฒ์๋ฌผ๋ก ๋์ด๊ฐ๊ฒ ๋ค. ์ฌ๊ธฐ์๋ @Transactional์ propagation ์์ฑ์ ๋ํด์ ์์๋ณด์. Propagation(์ ํ) ์์ฑ ์คํ๋ง์ Propagation์ ์์ฑ์ ๋ค์๊ณผ ๊ฐ๋ค. REQUIRED(TransactionDefinition.PROPAGATION_REQUIRED), SUPPORTS(TransactionDefi..
๐ง ์๋ก ์ด์ ๊ธ์์ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ํจํด์ ํ์ตํ๋ฉฐ ๊ฐ๋จํ ์น ํ๋ ์์ํฌ๋ฅผ ๋ง๋ค์ด ๋ณด์์ต๋๋ค. ์ด๋ฒ ๊ธ์์๋ ๊ทธ๋ ๋ง๋ค์ด ๋์๋ ๊ตฌ์กฐ์ ์ค์ ์คํ๋ง MVC์ ๊ตฌ์กฐ๋ฅผ ๋น๊ตํด๋ณด๋ฉฐ, ์คํ๋ง MVC์ ๊ตฌ์กฐ์ ๋ํ์ฌ ์ดํดํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๐ง ์คํ๋ง MVC์ ์ ์ฒด ๊ตฌ์กฐ ์ด์ ์ ์ ํฌ๊ฐ ๋ง๋ค์๋ ํ๋ ์์ํฌ์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. (์ฌ์ง์ ๊น์ํ ์ ์๋์ ์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์ ์ ์๋ฃ์์ ๋ฐ์ทํ์์ต๋๋ค.) ์คํ๋ง MVC๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค. ๋งค์ฐ ๋น์ทํ ๊ตฌ์กฐ๋ฅผ ์ง๋๊ณ ์๋ค๋ ๊ฒ์ ์ ์ ์๋๋ฐ, ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. FrontController -> DispatcherServlet ์ด๋ฆ๋ง ๋ฌ๋ผ์ก์ ๋ฟ, DispatcherServlet ์ญ์ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ์ ์ญํ ..
๐ง ๋ค์ด๊ฐ๊ธฐ์ ์์ ์์ผ๋ก ๋ฑ์ฅํ๋ ์ปจํธ๋กค๋ฌ(Controller)๋ MVC ํจํด์์์ Controller๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ Controller์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. HTTP ์์ฒญ์ ๋ฐ์ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฒ์ฆํฉ๋๋ค. ๋น์ฆ๋์ค ๋ก์ง์ ์คํํฉ๋๋ค. (์ด๋ ๋ณดํต Service ๊ณ์ธต์ ํด๋์ค๋ฅผ ํตํด ์คํํฉ๋๋ค.) ๋ทฐ(View)์ ์ ๋ฌํ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ์ฌ ๋ชจ๋ธ(Model)์ ๋ณด๊ดํฉ๋๋ค. ๐ง ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ํจํด์ ์ฌ์ฉํ์ง ์์์ ๋์ ๋ฌธ์ ์ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ํจํด์ ๋ํด ์์๋ณด๊ธฐ ์ ์, ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๋ฅผ ์ ์จ์ผ ํ๋์ง, ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ฐ๋จํ ํ์ ๊ด๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์
์ ํตํด ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ฐ์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ํ์ ๊ฐ์
ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ Controller..