์คํ๋ง23 [Reactive Programming] ๋น๋๊ธฐ-๋ ผ๋ธ๋กํน ํ๋ก๊ทธ๋๋ฐ ๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ (Synchronous) ์์ ์ ์คํ ํ๋ฆ์ ์์ฐจ์ ์ผ๋ก ๋์ ์ฝ๋๋ฅผ ํ์ ํ๊ธฐ ์ฝ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ฝ๊ฒ ์์ธก ๊ฐ๋ฅํ๋ฏ๋ก ๋๋ฒ๊น ์ด ์ฌ์ ํน์ ์์ ์ค ๋ค๋ฅธ ์์ ์ ํ ์ ์๋ค๋ ๋จ์ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ (Asynchronous) ์์ ์ ์คํ ํ๋ฆ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฐจ์ ์ด์ง ์์ ํ์ฌ ์คํ ์ค์ธ ์์ ์ด์ธ์ ๋ค๋ฅธ ์์ ๊ฐ๋ฅ. ํด๋ผ์ด์ธํธ, ์๋ฒ ๋ฑ ๋ชจ๋ ํ๊ฒฝ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ ๋ํ์ ์ผ๋ก CallBack, Promise, Future, Coroutine ๋ฑ์ด ์๋ค. ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ ๊ตฌํ ๋ฐฉ์ - Kotlin Thread ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ๋ฐฉ์ Runnable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ฌ ๊ตฌํ ํ๋์ ์ค๋ ๋ - ์ฑ๊ธ ์ค๋ ๋, ๋ค์ค ์ค๋ ๋ - ๋ฉํฐ์ค๋ ๋ fun main() { for (i in 0..5) { va.. 2023. 2. 11. ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ์์ํ๊ฒ ๋์๋ค. ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ์์ํ๊ฒ ๋์๋ค. ํ์ฌ ํ๋ก ํธ ๊ฐ๋ฐ์ ๋ถ์ด ์ฌ์ด๋ ํ์ ์ ๊ตฌํ ์ ์๋ ์น ์๋น์ค๋ฅผ ์๋ ค์ฃผ์ จ๊ณ , ํ๋ฒ ํด๋ณด๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๊ฐํ๊ฒ ๋ค์๋ค. ์ฌ๋ฌ์์ ์คํ ์ฑํ ๋ฐฉ์ ํฌํจํ์ฌ ์ด 3๊ณณ์ ์ ์ฒญ ๋ฐ ๋ฌธ์๋ฅผ ๋ฃ์๊ณ , ๋ต๋ณ์ด ๋ค๋ค ์์ผ์๊ธธ๋ ์๊ตฌํ๋ ์กฐ๊ฑด์ด ๋๊ฒ ๊ตฌ๋ ํ๋ ์๊ฐ์ด ๋ค์๋ค. ์ด์ ์ด๋ ๊ฒ ๋ ๊ฑฐ ๋ด๊ฐ ๋ง๋ค๋ฉด ๋์ง. ๊ทธ ๋์ ์ถ์์ ์ผ๋ก ๊ตฌ์ํ ์๋น์ค์ ์์ดํ ์ ํ๋ฒ ๊ตฌํํด๋ณด์. ๊ตฌํํ๋ฉด์ ์คํ ๊ฐ๋ฅ์ฑ์ ํ์ธํด๋ณด์. ๊ทธ๋ ๊ฒ ๊ฐ์ ๊ฐ๋ฐ ๊ธธ์ ๊ฑท๊ณ ์๋ ํ๋ค์๊ฒ ์ ์์ ๋๋ ธ๊ณ , ์คํํ๊ฒ ๋์๋ค. ์ ๋๋ก ํด๋ณด์ ํด์ ๋ ธ์ ๋ ์ ๋ฆฌํ๊ณ , ๊นํ Organization๋ ๋ง๋ค์๋ค. ์ด๋ฒ 1๋ฌ ๋์ ์๊ตฌ ์ฌํญ์ ๊ตฌ์ฒด์ ์ผ๋ก ์ ๋ฆฌํ๋ค๋ ๋ชฉํ๋ ์ธ์ ๋ค. ๊ฐ๋ฐ์ ์์ํ๊ธฐ ์ํด ํ์ํ ์ ํ ์ง์์ด ๋ค๋ฅธ ํ๋ก์ ํธ์.. 2023. 2. 7. [Spring Data JPA] Transaction ์์ด ์ฝ๊ธฐ ํ์ฌ์ ์ ์ฌํด์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ ์ค์ ๋ถ๋ช ํ jpa entity ๊ฐ์ฒด์ ์ฝ๊ธฐ ๊ณผ์ ์ค, ๋ถ๋ช ํ ํธ๋์ญ์ ์ฒ๋ฆฌ๊ฐ ํ์ํ ์ฝ๋๊ฐ ๋ณด์๋ค. ์ด๋ฅผํ ๋ฉด Spring Security ์ธ์ฆ์ ๊ฑฐ์น๊ณ Security Context Holder ์ ์ ์ฅ๋ UserPrinciple ๊ฐ์ฒด @Target(AnnotationTarget.VALUE_PARAMETER) @Retention(AnnotationRetention.RUNTIME) @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : user") annotation class CurrentUser(val require: Boolean = true) ์ด๋ฌํ ์ ๋ ธํ ์ด์ ์ ํํ๋ค ์ ์ญ์ ์ผ๋ก Api ์์.. 2023. 1. 30. [์ด์] Pageable test ๊ด๋ จ ์๋ฌ ๐ก๋ฌธ์ API Controller๋ฅผ ํ ์คํธ ํ๋๋ฐ ์ ์ฑ๊ณตํ๋ ํ ์คํธ๊ฐ ๊ณ์ ์คํจํ๋ค. org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: No primary or single unique constructor found for interface org.springframework.data.domain.Pageable ํ ์คํธ ์ฝ๋ mockMvc.perform(get("/api/v2/users") .param("page", String.valueOf(page))) .andExpect(status().isOk()) .andE.. 2022. 11. 23. [๋ง๋ค๋ฉด์ ๋ฐฐ์ฐ๋ ํด๋ฆฐ ์ํคํ ์ฒ] Chapter6. ์์์ฑ ์ด๋ํฐ ๊ตฌํํ๊ธฐ CH 6. ์์์ฑ ์ด๋ํฐ ๊ตฌํํ๊ธฐ 1. ์์กด์ฑ ์ญ์ ์๋น์ค๊ฐ ์์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด ํฌํธ ์ธํฐํ์ด์ค๋ฅผ ํธ์ถ ์ก๊ฐํ ์ํคํ ์ฒ์์ ์์์ฑ ์ด๋ํฐ๋ ์ฃผ๋ก ์์๊ณ ์ ์ด๋ํฐ => ์ฑ์์ ํธ์ถํ๊ธฐ ๋๋ฌธ, ๋ฐ๋์ ๊ฒฝ์ฐ๋ ์๋ค. ํฌํธ๋ ์ฑ๊ณผ ์์์ฑ ์ฌ์ด์ ๊ฐ์ ์ ๊ณ์ธต ์์์ฑ ๋ฌธ์ ์ ์ ๊ฒฝ์ฐ์ง ์๊ณ ๋๋ฉ์ธ ์ฝ๋ ๊ฐ๋ฐ ๋ชฉ์ ์์์ฑ ๊ณ์ธต์ ์ฝ๋ ์์กด์ฑ์ ์์ฐ ์ด๋ด ๊ฒฝ์ฐ, ์์์ฑ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋๋ผ๋ ์ฝ์ด ์ฝ๋์ ์ํฅ์ด ์์ ๋ฐํ์์๋ ์ฌ์ ํ ์ฑ์ด ์์์ฑ ์ฝ๋์ ์์กดํ๊ณ ์๋ค. ์ธํฐํ์ด์ค ๊ณ์ฝ์ ๋ง์กฑํ๋ ํ ์์์ฑ ์ฝ๋ ์์ ์ ๋ฌธ์ ๊ฐ ์๋ค. 2. ์์์ฑ ์ด๋ํฐ์ ์ฑ ์ ์ ๋ ฅ์ ๋ฐ๋๋ค. ์ฃผ๋ก ๋๋ฉ์ธ ์ํฐํฐ, DB ์ฐ์ฐ ์ ์ฉ ๊ฐ์ฒด ์ ๋ ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํฌ๋งท์ผ๋ก ๋งคํํ๋ค. JPA Entity ๊ฐ์ฒด ๋งคํ JPA๋ฅผ ์ ์ธํ ๊ธฐ์ ๋ ๊ณ ๋ ค .. 2022. 10. 31. [๋ง๋ค๋ฉด์ ๋ฐฐ์ฐ๋ ํด๋ฆฐ ์ํคํ ์ฒ] Chapter5. ์น ์ด๋ํฐ ๊ตฌํํ๊ธฐ CH.5 ์น ์ด๋ํฐ ๊ตฌํํ๊ธฐ 1. ์์กด์ฑ ์ญ์ Web Adaptor = Incomming Adaptor ์ธ๋ถ๋ก๋ถํฐ ์์ฒญ ๋ฐ์ => ์ ํ๋ฆฌ์ผ์ด์ ์ฝ์ด ํธ์ถ => ๋ฌด์จ ์ผ์ ํด์ผํ ์ง ์๋ ค์ค ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์ ์น ์ด๋ํฐ๊ฐ ํต์ ํ ์ ์๋ ํฌํธ๋ฅผ ์ ๊ณต ์๋น์ค๋ ํฌํธ ๊ตฌํ & ์น ์ด๋ํฐ๊ฐ ์ด ํฌํธ๋ฅผ ํธ์ถ ์ ์ด ํ๋ฆ ์ผ์ชฝ => ์ค๋ฅธ์ชฝ ์น ์ด๋ํฐ๊ฐ ์ ์ค์ผ์ด์ค๋ฅผ ์ง์ ํธ์ถํ ์ ์์ง๋ง ๊ฐ์ ๊ณ์ธต์ ๋ฃ์ ํฌํธ (๊ฐ์ ๊ณ์ธต)๋ ์ธ๋ถ์ ํต์ ํ ์ ์๋ ๊ณณ์ ๋ํ ๋ช ์ธ์ ์ด๋ค ํต์ ์ด ์ผ์ด๋๋์ง ๋ช ํํ๊ฒ ์ ์ ์์. Outgoing Port ์ด ํฌํธ๋ ์น ์ด๋ํฐ์์ ๊ตฌํํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ์ด์์ ํธ์ถํด์ผ ํ๋ค. ์น ์ด๋ํฐ๋ ์ธ์ปค๋ฐ & ์์๊ณ ์ ์ด๋ํฐ๊ฐ ๋ ์๋ ์๋ค๊ณ ํ๋ค. 2. ์น ์ด๋ํฐ์ ์ฑ ์ ๊ฑฐ์์ ๊ด์ HTTP ์์ฒญ.. 2022. 10. 30. ๊ฒฐ์ API ๋ฆฌํฉํ ๋ง - [1] (feat. ์ ๋ต ํจํด) ๊ฒฐ์ API๋ฅผ ๋ฆฌํฉํ ๋ง ์์ํ๋ฉฐ ์ธ๋ถ API๋ฅผ ์ฐ๋ ๋ถ๋ถ์ ๋ํด์ ์๊ฐํด๋ดค๋ค. ๊ธฐ์กด์๋ ์นด์นด์คํ์ด๋ฅผ ์ด์ฉํ์๊ณ , ์ง๊ธ๋ ์นด์นด์คํ์ด๋ฅผ ์ด์ฉํ ๊ฒ์ด์ง๋ง, ์ถ๊ฐ์ ์ผ๋ก ๋ค๋ฅธ ๊ฒฐ์ API๋ฅผ ์ฐ๋ํ ์ ์์ ๋งํ ์ํฉ์ ์๊ฐํด๋ดค๋ค. ์คํ๋ง์ ์ฒ์ ๊ณต๋ถํ๊ธฐ ์์ํ ๋ ์ฝ์๋ ์ฑ ์ธ ๊ฐ๊ตฌ๋ฆฌ (์คํ๋ง ์ ๋ฌธ์ ์ํ ๋ญ์๊ธฐ..) ์ฑ ์์ ์คํ๋ง์์ ์ฌ์ฉํ๋ ๋ค์ํ ๋์์ธ ํจํด๋ค์ ์๊ฒ ๋์๋ค. ๊ทธ ๋๋ ๋์์ธ ํจํด์ด๋ ๊ฒ์ ๋ํด ๊ฐ์ด ์ ์ค์ง ์์๋๋ฐ, ์ง์ ์ ์ฉํ ๊ธฐํ์ ์ํฉ์ด ์์๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํด๋ณธ๋ค. ๊ณ์ ๋ฉด์ ์ง๋ฌธ ๋๋นํด ์ต๋ฌด์์ฒ๋ผ ๋ฌ๋ฌ ์ธ์ฐ๊ณ ๋ค๋๋ ๋์ค ์ง์ ์ ์ฉํ ๊ธฐํ๊ฐ ๋ฑ ์๊ฒผ๊ณ , ๊ฐ์ฒด์งํฅ ๊ฐ๋ฐ 2์์น์ธ OCP์ ์ฐฐ๋ก์ผ ๊ฒ์ด๋ผ๋ ๋จธ๋ฆฌ ์์ ์ธ์นจ์ด ์ธ๋ ธ๋ค. ๊ทธ๋๋ก ์ ์ฉํด๋ณด์๋ค. ๊ธฐ์กด ํ๋ก์ฐ ์ปจํธ๋กค๋ฌ ์๋น์ค(์นด์นด.. 2022. 9. 20. ๊ฐ์ฒด ๊ฐ ๋งคํ์ ์ํ MapStruct ์ฌ์ฉ ๋ฐฉ๋ฒ ๊ธฐ์กด ํ๋ก์ ํธ์์ Dto Entity๋ฅผ ๋งคํํ ๋ model mapper ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์๋ค. ํธํ๊ฒ ์ฌ์ฉํ ์ ์์์ง๋ง ๋ด๋ถ์ ์ผ๋ก ๋ฆฌํ๋ ์ ์ ์ด์ฉํ๊ธฐ ๋๋ฌธ์, ์ฑ๋ฅ ์ ๋ฌธ์ ๊ฐ ์๋ค. ์ด๋ฒ์๋ ๋ง์ด๋ค ์ถ์ฒํ๋ Map Struct๋ฅผ ์ฌ์ฉํด๋ดค๋ค. ์ ์ฉํ๋ฉด์ ์์ํ ๋ฌธ์ ๋ค์ด ์์๋๋ฐ, ๋ด๊ฐ ๊ฒช์ ๋ฌธ์ ์ ๋ค์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ๋ค์ ์ ๋ฆฌํด๋ณด๊ฒ ๋ค. https://mapstruct.org/documentation/dev/reference/html/ MapStruct 1.5.2.Final Reference Guide If set to true, MapStruct in which MapStruct logs its major decisions. Note, at the moment of writing in Maven, al.. 2022. 8. 29. ์ฝ๋ ๋ฆฌํฉํ ๋ง [1] ์ง๋ 1์ฃผ์ผ๊ฐ ๊ธฐ์กด ํ๋ก์ ํธ์ ๋ฆฌํฉํฐ๋ง์ ์ํด ์๋ก์ด ์ ์ฅ์๋ฅผ ์์ฑํ๋ค. ์ํคํ ์ฒ ๋ถ๋ถ ์ค๊ณ๋ฅผ ๊ฑฐ์ 2, 3์ผ์ ํ ๊ฒ ๊ฐ๋ค. ์์ง ์์ ์ด ํ์ํ๊ฒ ์ง๋ง, ํญ์ ๊ณ ๋ฏผํด๋ณด์. ๊ธฐ์กด ํ๋ก์ ํธ๋ multi module๋ก ์งํํ์ง๋ง, ์๋ฒฝํ ๋ฉํฐ ๋ชจ๋ ํ๋ก์ ํธ ์ด์ง ์์๋ค. ๋ชจ๋๋ฆฌํฑ์ผ๋ก ๊ฐ์ง, MSA๋ฅผ ๊ณ ๋ คํด ๋ชจ๋๊ฐ ๋ถ๋ฆฌ๋ฅผ ํ ์ง๊ฐ ๊ณ์ ๊ณ ๋ฏผ๋๋ค.. ํ์ฅ์ฑ์ ์ํด ๋ชจ๋, ํจํค์ง๊ฐ ์์กด์ฑ ๋ถ๋ฆฌ๋ฅผ ํํ์ด ๊ณ ๋ คํด๋ด์ผ๊ฒ ๋ค. ๊ธฐ์กด ์์ฑ ์ฝ๋๋ฅผ ์ฎ๊ธฐ๋ฉฐ ์กฐ๊ธ ๋ ํด๋ฆฐํ ๊ฐ์ฒด์งํฅ์ ์ธ ์ฝ๋๋ก ๋ฆฌ๋ทฐ์ด๋์ ํผ๋๋ฐฑ์ ํตํด ์์ ํด๋๊ฐ๋ค. ๋ง์ด ์๊ณ ์์๋ค๊ณ ์๊ฐํ ๋ถ๋ถ์์๋ ํ์ ์ด ์์๊ณ , ์ ํ ์์ง ๋ชปํ๋ ๋ํ ์ผํ ๋ถ๋ถ๋ ์์๋๊ฐ๋ ์ค์ด๋ค. ์ธ์ฆ ๋ฐ ์ธ๊ฐ ๋ถ๋ถ์ ๊ธฐ์กด ํ๋ก์ ํธ์์๋ ์์ ๊ตฌํํ์ง๋ง, ์ด๋ฒ์๋ Spring Security.. 2022. 8. 3. ๋ฆฌํฉํ ๋ง ๊ณํ ์ค๋๋ง์ ๋ธ๋ก๊ทธ์ ๊ธ์ ์ด๋ค. ์ง๋ ๋ฉฐ์น ๋์ ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ํด AWS ๋ง๊ตฌ์ฑ์ ํ๊ณ , ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ฉฐ ๋ฐฐํฌ๊น์ง ์์ผฐ๋ค. ๋ถํ ํ ์คํธ๋ฅผ ์๋๊ณ , ์ข์ ๊ธฐํ๋ฅผ ์ป์ด ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ฒ ๋์๋ค. ๊ฒฐ๋ก ์, ์ด ์ํ๋ก ๋ถํ ํ ์คํธ๋ฅผ ์งํํ๋ ์๋ฏธ๊ฐ ์์ ์ ๋๋ก ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ง์๋ค. ํ๋ก์ ํธ๋ฅผ ์์ํ๋ฉฐ ์์ฌ์ด ์ฝ๋ ์์ฑ ๋ถ๋ถ๋ ๋ง์๊ณ , ๊ถ๊ธ์ฆ๋ ๋ง์์ง๋ง, ๋๋จธ์ง ์ฃผ๊ด์ ์ธ ํ๋จํ์ ๊น๋ํ ๋ถ๋ถ์ ๋๋ฆ ๊ด์ฐฎ๊ฒ ์์ฑ์ ํ๋ค๊ณ ์๊ฐํ์๋ค. ์์ง ๊ณ ์น ๊ฒ ๋ง์๊ณ , ๋ฐฐ์ธ๊ฒ ๋ง์๊ณ , ๋ชฐ๋๋ ๊ฒ์ด ๋ง์ ๋์๋ค. ์ด๋ฐ ๋ฆฌ๋ทฐ๋ฅผ ๋ค์ ๋๋ง๋ค ๋๋ ์์ง ํ์ฐธ ๋ฉ์๊ตฌ๋. ๊ณต๋ถ ๊ธฐ๊ฐ ๋๋น ๋ง์ ์ฑ์ฅ์ ๊ฑฐ๋์๋ค๊ณ ์๊ฐํ๋๋ฐ, ๋ด๊ฐ ์์ฌ์ด ๋ง์ ๊ฑด์ง. ์ฌ์ค์ ๊ธฐ๊ฐ ๋๋น ์ฑ์ฅ์น๊ฐ ํ๊ท ์น์๋ ๊ฑด์ง. ๋ฌด๊ธฐ ํด์ง๋ค. ๋๋ฌด ๊ธํ๊ฐ? ๊ทธ๋ผ์๋.. 2022. 7. 28. JPA ๊ฐ๋ ์ ๋ฆฌ JPA ์ฑ ์ ์ด์ ๋ง ๋ค ์ฝ์๋ค. ORM์ ์ฒ์ ๊ณต๋ถํ๋ค๋ ์๊ฐ์ ๊ธด์ฅ์ด ๋ง์ด ๋์ง๋ง, DB ๊ณต๋ถ๋ ํ๊ณ , ๊ฐ์ฒด์งํฅ์ ๋ํ ๊ณต๋ถ๋ฅผ ์ถฉ๋ถํ ํ ์ํ์ฌ์ ๊ทธ๋ฐ์ง ์๊ฐ๋ณด๋ค ๊ธฐ์กด์ ์ฝ์๋ real mysql, ํ ๋น์ ์คํ๋ง 3.1๋ณด๋ค ์ ์ฝํ๋ค. ๊ธฐ์กด์ database layer๋ Mybatis ํ๋ ์์ํฌ๋ฅผ ์ด์ฉํด ๊ตฌํํ์ง๋ง, ์ด๋ ๋ฌธ์ ๊ฐ ์์๋ค. SQL ์ค์ฌ์ ๊ฐ๋ฐ์ด ๋๋ ๊ฒ์ด๋ค. ์์ผ๋ก ํ ์ผ์ด ๋ง์ด ๋จ์์ผ๋ฏ๋ก, JPA๋ก์ ๋ฆฌํฉํฐ๋ง์ ์ฌ์ฌ ์์ํด๋ณด์. JPA Java Persistence API ์๋ฐ ์ง์์ ORM ํ์ค ๊ธฐ์ ORM Object Relational Mapping ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฅผ ๋งคํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด์ ์ ์ฅํ ์ ์๋ค. Hibernate ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ORM ํ๋ ์์ํฌ JPA ์ธํฐํ.. 2022. 7. 15. ๋ฆฌํฉํฐ๋ง ใAuthentication(์ธ์ฆ)ใ ํ์ด๋์ ์ฒ์ ํ์ฌ์ ์ง์ํ๋ค. ์๋ฅ๋ฅผ ์ฌ๋ฌ ๊ตฐ๋ฐ ๋ฃ์๋ค. ๋ฒ์จ ์๋ฅ ํ๋ฝ๋ง 3๋ฒ์งธ์ด๋ค. ์๋ฅ ํ๋ฝ์ด ์ด๋ฐ ๊ธฐ๋ถ์ด๊ตฌ๋...ใ ใ ํ์ฌ ๊ธฐ์ค์ ๋ถํฉํ์ง ์๋ ๋ด ์ค๋ ฅ๊ณผ ๊ฒฐ๊ณผ๋ฌผ ํ์ด์ง ๋ญ. ๋ ์ด์ฌํ ๋ค๋ฌ์ด์ผ๊ฒ ๋ค. ์๋ฅ๋ฅผ ๋ค๋ฌ๋ค๊ฐ ์ธ์ฆ๊ณผ ์ธ๊ฐ ๊ตฌํ ์ค ์ด์๋ฅผ ์์ฑํ๋ ๋ถ๋ถ์ด ๋์ ๋์๋ค. ์ธ์ฆ๊ณผ ์ธ๊ฐ... ์... ์ธ๊ฐ๋ ์ ๋ ธํ ์ด์ ์ ์ด์ฉํด ์ธํฐ์ ํฐ๋ก ๊ตฌํํ ๋ช ํํ ๊ทผ๊ฑฐ๊ฐ ์์๋ค. ์ธ์ฆ์ ์ข ์ ๋งคํ๋ค. JWT ํ ํฐ์ ์ธ์ฆํ๋ ๋ถ๋ถ์ ๊ตณ์ด ์ธํฐ์ ํฐ๊น์ง ๋๋ฌํ ํ์๊ฐ ์๋ค. ๊ทธ๋์ ์ธ์ฆ ์์ ์ ์ธํฐ์ ํฐ์์ ํํฐ๋ก ๋ฆฌํฉํ ๋ง์ ์งํํ๋ค. ํํฐ(Filter)๋? HTTP ์์ฒญ๊ณผ ์๋ต์ ๊ฑฐ๋ฅธ ๋ค ์ ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค. Servlet Container ๋จ์์ ๋์ํ๋ค. ์คํ๋ง ๋ฒ์ ๋ฐ์์ ์ฒ๋ฆฌ๋๋ค. Dispathcer.. 2022. 7. 11. OutBox Pattern & Saga Pattern & Transaction ์ง๋๋ฒ ํฌ์คํ ์ ์ดํ๋ก 3์ผ๊ฐ ํ ์คํธ ์ฝ๋์ ๊ดํ ๊ณต๋ถ๋ฅผ ํ๋ฉฐ ๋ฆฌํฉํฐ๋ง์ ์งํํ๋ค. ๋ฐ์ดํฐ ๋ถ์ฐ ํ๊ฒฝ์์์ ํธ๋์ญ์ ์ ๊ณ ๋ ค๋ ์ถฉ๋ถํ ์ค์ํ ์ค๊ณ ๊ฐ๋ค. ๊ทธ ๋ฆฌํฉํฐ๋ง ๊ณผ์ ์ ์ ๋ฆฌํด๋ณด๊ฒ ๋ค. https://sweeeetgoguma.tistory.com/entry/%E3%80%8COutBox-Pattern%E3%80%8D-%ED%99%9C%EC%9A%A9 ใOutBox Patternใ ํ์ฉ https://github.com/GroovyArea/MyChickenBreastShop/wiki/Version-1 GitHub - GroovyArea/MyChickenBreastShop: ChikenBreastShop API with Spring boot ChikenBreastShop API with Spring boot... 2022. 6. 13. 2022.06.01 ใ๊ฒฐ์ API - Ver.2ใ ์ง๋๋ฒ ํฌ์คํ ์ ์ด์ด ์์ฑํ๊ฒ ๋ค! https://sweeeetgoguma.tistory.com/entry/20220529-%E3%80%8C%EA%B2%B0%EC%A0%9C-API%E3%80%8D 2022.05.29 ใ๊ฒฐ์ APIใ ์ฅ๋ฐ๊ตฌ๋ crud ์์ ํ ๊ฒ์ ์์ ๋ฐ ํ ์คํธ๋ฅผ ์ด๋ฒ ์ฃผ์ ๋๋ด๊ณ ๋์, ๋ค๋ฆ๊ฒ ๊ฒฐ์ API๋ฅผ ์ค๊ณํ๊ธฐ ์์ํ๋ค. ์นด์นด์ค ํ์ด API๋ฅผ ์ฌ์ฉํด์ ํด๋ณด๋ ค๊ณ ํ๋๋ฐ, ์๊ฐ๋งํผ ์ฝ์ง ์์๋ค. ์ด๋์ ๋ณธ ๊ฑด๋ฐ sweeeetgoguma.tistory.com ์นด์นด์คํ์ด Rest API๋ฅผ ์ด์ฉํด ๊ฒฐ์ ์ค๋น์ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ค๊ณํ๋ ๊ฒ๊น์ง ์๋ฃํ๋ค. ์นด์นด์ค ํ์ด ํ๋ก์ธ์ค์ ๋ฐ๋ผ ์ค๋น์ ๊ฒฐ์ ๋ฐ ์น์ธ์ ์ํ ํต์ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํ๋ค. ์ด ๊ณผ์ ์์์ ์๋ง์ ์ฝ์ง์ด ์์๋ค. ์ฌ์ค ์ฝ์ง์ด๋ผ๊ธฐ๋ณด๋ค.. 2022. 6. 1. 2022.05.28 ใ์ฟ ํค ์์ ใ ์ฅ๋ฐ๊ตฌ๋ API๋ฅผ ์ฒ์ ๊ตฌํํด๋ณด๋ ์ฟ ํค๋ก ํ๋ค๊ฒ ์งฐ์๋ค. ์ค๋ ์ฃผ๋ฌธ API๋ฅผ ๊ตฌํํ๋ ค๊ณ ์นด์นด์คํ์ด ๊ด๋ จ API ํ์ ๋ฐ ๊ตฌ์์ ํ๋ ๋์ค ์ฅ๋ฐ๊ตฌ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ๊ฒฐ์ ํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ ์ฌ๋ ธ๋ค. ๋ค์ ํ๋ฒ ์ฅ๋ฐ๊ตฌ๋ API ๋์์ด ์ ๋๋์ง ํฌ์คํธ๋งจ์ผ๋ก ํ์ธ์ ํ๋ ๋์ค ์ด์ํ ์ฟ ํค ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ฐ๊ฒฌํ ์ ์์๋ค.. ๋ค์ ํ๋ฒ ์ ๊ฒ์ ํตํด ์ฝ๋ ์์ ์ ํ๋ฉฐ ๋จ๋ฒ์ ์๋ฒฝํ ์ฝ๋๋ฅผ ์์ฑํ๋ค๋ ์๋ง์ฌ ๋๊ผ๋ ์์ ์ ๋ฐ์ฑ์ ํ๊ฒ ๋์๋ค..ใ ใ ๋ฌธ์ ์ ์ฅ๋ฐ๊ตฌ๋ ์ํ ์ถ๊ฐ๊ฐ ๋์ง ์๋๋ค ์ฟ ํค๊ฐ ๋ค์ค์ผ๋ก ์์ฑ๋๋ค => ์ด ๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์ ์ผ ์ปธ๋ค ๊ธฐ์กด ์ฝ๋ ์ฅ๋ฐ๊ตฌ๋ ์ฟ ํค๋ฅผ ์์ ํ์ฌ response ๊ฐ์ฒด์ ์ฝ์ ํ๋ค. ๋ฌธ์ ์๋ก์ด ์ฟ ํค๊ฐ ๊ฐ์ Key๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๊ฐ ์์ฑ๋์ด ์ ์ฅ๋๋ค. => ๋ด๊ฐ ์ํ ๊ฑด ๊ธฐ์กด ์ฟ ํค๋ฅผ .. 2022. 5. 28. ์ด์ 1 2 ๋ค์ ๋ฐ์ํ