๐ Java & Kotlin & Spring57 [Spring Boot] ํฐ๋ฏธ๋์์ ๋น๋ ํด (Maven, Gradle)๋ก Spring Boot ์คํ์ํค๊ธฐ ์ค๋์ ํฐ๋ฏธ๋์์ Springboot Application ์ ์คํ์ํค๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๋ ค ํ๋ค. ํ์ฌ Microservice Application ์ ๊ฐ๋ฐํ๊ธฐ ์ํด์ ์ฃผ๋ก Eureka์ Gateway ๋ฅผ ํจ๊ป ๋์์ํค๋ ์ผ์ด ๋ง์์ก๋ค. Service Discovery ์ญํ ์ ์ํํ๋ Eureka ์๋ฒ๋ ๋จ์ง ์๋น์ค์ Registry์ Discovery ์ํฉ์์ ์ผ๋๊ณ ๋ง ์์ด์ผ ํ๋ ์ํฉ์ด ์์ฃผ ๋ฐ์ํ๋๋ฐ, ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ํด์๋ Eureka ์๋ฒ์ Gateway ๋ฅผ Intellij ์์ ์ผ๋๋ ๊ฒ์ด ๋๋ค์์ด๋ค. ํ์ง๋ง Intellij ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ฐ๊ณ ์๋ ์กฐ๊ธ ๋ฌด๊ฑฐ์ด IDE ์ด๊ธฐ ๋๋ฌธ์ ํด๋น PC์ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ๋จน์ด ๋ถํธํ ์ํฉ์ด ์ด๋ง์ ๋ง์ด ์๋๋ค. ๊ทธ๋ด ๋ ๋ง์ ํด๊ฒฐ ๋ฐฉ.. 2021. 4. 24. Spring Cloud Gateway ๋ฅผ ์ด์ฉํด API Gateway๋ฅผ ๊ตฌ์ฑํ๊ณ ์ค์ตํด๋ณด์ (Eureka Server ๋ฅผ ์ด์ฉํด Load Balancing ํ๊ธฐ) ํด๋น ๊ธ์ Spring Cloud Netflix Eureka์ ์์กดํ๋ ๊ธ์ ๋๋ค. ์ค์ต ํ๊ฒฝ์ ๋ฐ๋ผํ์๋ ค๋ฉด Eureka ๊ธ์ ํ์ธํ์๊ธธ ๋ฐ๋๋๋ค. ๋ชฉ์ฐจ Gateway Pattern Gateway๊ฐ ๋์ ๋๋ฉด? Spring Cloud Gateway Gateway๊ฐ ๋์ํ๋ ๋ฐฉ๋ฒ Gateway ๋ด๋ถ ๊ตฌ์กฐ ์ค์ตํ๊ธฐ ํ๋ก์ ํธ ์์ฑํ๊ธฐ ์์กด์ฑ ๋ง์ดํฌ๋ก์๋น์ค ์ฐ๊ฒฐํ๊ธฐ Eureka Server ์์ ๊ฐ๊ฐ ์ธ์คํด์ค ์ ๋ณด๋ฅผ ๋ฐ์ ๋ก๋๋ฐธ๋ฐ์ฑ ํ๊ธฐ Gateway Pattern Microservice ์์ Gateway ํจํด์ ๊ฐ์ฅ ํํ๊ณ ์ ์ฉํ๊ฒ ์ฐ๋ ํจํด ์ค ํ๋์ด๋ค. Spring Cloud์ ๋ณ๊ฐ๋ก Gateway ํจํด์ ๋ํ ์์ธํ ์ฌํญ์ MSA์ ํต์ฌ ๊ตฌ์ฑ ์์ - API Gateway ํจํด ์์ ํ์ธํ ์ ์์ต๋๋ค. .. 2021. 4. 24. [Spring Cloud] Service Discover Server๋ก Netflix Eureka ์ด์ฉํ๊ธฐ Spring Cloud Netflix ์คํ๋ง ํด๋ผ์ฐ๋ ๋ทํ๋ฆญ์ค๋ Spring Boot Application ์ ๋ํ ํตํฉ ํ๊ฒฝ ๊ตฌ์ฑ์ ์ง์ํ๋ Netflix์ OSS ์๋น์ค์ด๋ค. Netflix๋ 2007๋ ์ฌ๊ฐํ DB์์์ผ๋ก 3์ผ๊ฐ ์๋น์ค ์ฅ์ ๋ฅผ ๊ฒผ์๋๋ฐ, ์ด์ ์ด์์ง๋ค๊ณผ ๊ธฐ์ ๋ฆฌ๋๋ค์ ์ ๋ขฐ์ฑ ๋๊ณ ์ํํ์ฅ์ด ๊ฐ๋ฅํ Cloud System์ผ๋ก ์ด์ ์ ํด์ผ ํจ์ ๋๊ผ์๋ค๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฒฐ๊ตญ MSA๋ฅผ 7๋ ๋ง์ ์๋ฒฝํ๊ฒ ์ด์ ํ๊ฒ ๋์๋๋ฐ, ์ด ๋ ์์ ๊ฒฝํ์น๋ฅผ ๋ฐํ์ผ๋ก MSA ๊ธฐ์ ์ Spring์๊ฒ ์คํ์์ค๋ก ํ๊ฒ ๋์๋ค. Netflix OSS ์ Spring Cloud Netflix Netflix OSS ์๋ ๋ค์ํ ์๋น์ค๋ค์ด ์กด์ฌํ๋ค. Eureka : Discovery Server ๊ฐ๊ฐ์ ์๋น์ค ์ธ์คํด์ค.. 2021. 4. 24. [Spring Boot] JUnit5 BDDMockito๋ก ์์๋ณด๋ TDD์ BDD ์ ์ฐจ์ด ๋ฐ BDD ์ค์ต ๋ชฉ์ฐจ TDD ๋? TDD ๋? TDD ์์ BDD ๋? BDD ๋? BDD ์์ TDD vs BDD TDD์ BDD์ ํ ํ ์์ฝ BDDMockito๋ฅผ ์ด์ฉํ BDD ์ค์ต ํ๊ฒฝ ๊ตฌ์ฑ Mockito vs BDD Mockito Stubbing given any() anyString() anyLong() willReturn() will() willThrow() ๋ณธ ์ฃผ์ ๋ฅผ ํ์ตํ๊ธฐ ์ํด์๋ Java์ JUnit5์ BDDMockito ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กด์ฑ์ด ํ์ํฉ๋๋ค. ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ฉด์ ์ง๊ธ๊น์ง ๋๋ ๊ฐ์ฅ ํฐ ๋ณํ๊ฐ ๋์๊ฒ๋ TDD๊ฐ ์๋๊น ์ถ๋ค. ์ฐ์ฐํ ๊ธฐํ์ TDD๋ฅผ ์ค์ค๋ก ๋์ ํ์์ ๋, ๋ด๊ฐ ๋ค์๋ ์ฒซ ์๊ฐ์ ๋๋ฌด ๊ท์ฐฎ์๋ฐ,... ์ด๋ ๊ฒ ํ๋ค๊ฐ ์ธ์ ๋๋ด์ง...? ์ด๊ฑฐ ๊ทธ๋ฅ ํ ์คํธ ์ ์ง๊ณ ๋ฐ๋ก ํ .. 2021. 4. 22. [JUnit 5] @ParameterizeTest ๋ก ํ๋์ ํ ์คํธ ์ฝ๋์์ ์ฌ๋ฌ ๊ฐ์ ํ๋ผ๋ฏธํฐ ํ ์คํธํ๊ธฐ (Springboot + ControllerAdvice, ๋น๋ฐ๋ฒํธ ๊ฒ์ฆ) ์ค๋์ JUnit5 ์ @ParameterizedTest ์ ๋ํด์ ์์๋ณผ ๊ฒ์ด๋ค. ์ด๋ฅผ ์ํด ์ฌ์ฉ๋๋ ํ์ ๊ธฐ์ ์ ๋ค์๊ณผ ๊ฐ๋ค. SpringBoot 2. JUnit 5 Validation ControllerAdvice ์ด์ ๊ฐ์ DTO ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. @NotBlank๋ @Size๋ @Email ์ ๋ชจ๋ validation ์์ ์ฌ์ฉํ๋ ๊ฒ์ธ๋ฐ, ๋ง์ฝ ์ด ์ ๋ ฅ ๊ฐ๋ค ์ค์์ ํด๋น constraint๋ฅผ ๋ง์กฑ์ํค์ง ๋ชปํ๋ค๋ฉด MethodArgumentNotValidException ์ ๋ฐ์์ํจ๋ค. ๊ทธ๋ผ ControllerAdvice๋ฅผ ์ด์ฉํด์ ํด๋น ์์ธ๊ฐ ๋ฐ์ํ์์ ๋ ErrorResponse๋ฅผ ์๋ตํ๋ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด๋ณด์. ControllerErrorAdvice.class @ResponseBod.. 2021. 4. 19. [Spring Framework] Spring-Core(BeanFactory ์ธํฐํ์ด์ค) ๋ถ์ ๋ฐ ๊ตฌํ ์ด ๊ธ์ Spring์ ๊ณต์ ๋ฌธ์๋ฅผ ํด์ํ๊ณ ์ฝ๊ฒ ์ดํดํ๊ธฐ ์ํ ๊ธ์ด๋ฏ๋ก ๊ณต์ ๋ฌธ์์ ๊ฐ์ธ์ ์๊ฐ๊ณผ ์ถ์ธก์ด ํฌํจ๋ ๊ธ์ด๋ ์ด ์ ์ฐธ๊ณ ํ๊ณ ์ฝ์ด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. ์ค๋ ์์๋ณผ ๊ฒ์ Spring-Framework-Core์ BeanFactory์ ๋ํด์ ์์๋ณผ ๊ฒ์ด๋ค. Interface BeanFactory Spring ๊ณต์ ๋ฌธ์์์๋ BeanFactory์ธํฐํ์ด์ค๋ฅผ Spring ์ปจํ ์ด๋์ ์ ๊ทผํ๊ธฐ ์ํ Root ์ธํฐํ์ด์ค๋ผ๊ณ ์ ์ํ๋ค. ์ด ์ธํฐํ์ด์ค๋ ๊ฐ๊ฐ String ์ด๋ฆ์ผ๋ก ๊ณ ์ ํ๊ฒ ์๋ณ๋๋ ์ฌ๋ฌ Bean ์ ์๋ฅผ ๋ณด์ ํ๋ ์ค๋ธ์ ํธ์ ์ํด ๊ตฌํ๋ฉ๋๋ค. ๋น ์ ์์ ๋ฐ๋ผ ํฉํ ๋ฆฌ๋ ํฌํจ ๋ ๊ฐ์ฒด์ ๋ ๋ฆฝ ์ธ์คํด์ค (Prototype ๋์์ธ ํจํด) ๋๋ ๋จ์ผ ๊ณต์ ์ธ์คํด์ค (์ธ์คํด์ค๊ฐ ๋ฒ์์ ์ฑ๊ธ ํค ์ธ Singl.. 2020. 9. 7. ์ด์ 1 2 3 4 5 6 7 8 ยทยทยท 10 ๋ค์