๐ Java & Kotlin & Spring53 [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. [Spring Framework] AOP์ ๋ํ ์ฉ์ด๋ค๊ณผ ๊ธฐ๋ณธ ์ปจ์ ์ ๋ํด์ ์์๋ณด์. ์ค๋์ Spring์ ํต์ฌ ๊ธฐ๋ฅ์ค ํ๋์ธ AOP (Aspect Oriented Programming)์ ๋ํด์ ์์๋ณด์. AOP ์ฌ์ ์ ์๋ฏธ์ธ AOP๋ ํก๋จ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ๋ฅผ ํ์ฉํจ์ผ๋ก ๋ชจ๋์ฑ์ ์ฆ๊ฐ์ํค๋ ๊ฒ์ด ๋ชฉ์ ์ธ ํ๋ก๊ทธ๋๋ฐ์ ํจ๋ฌ๋ค์์ด๋ค. ์ข ๋จ ๊ด์ฌ์ฌ๋? ํ๋์ ๋น์ฆ๋์ค ๋ก์ง์ด ์ํํ๊ธฐ ์ํด ํ์ํ ๋ก์ง์ด ์ข ๋จ์ ๊ฐ๋ ์ผ๋ก ์กด์ฌํ๋ ๊ฒ์ ๋ปํ๋ค. ์๋ฅผ ๋ค์ด ํ์๊ฐ์ ์ ์ํด ํ์ํ ๋ก์ง๋ค์ด ํ์๊ฐ์ ์ ์ํํ๊ธฐ ์ํ ๊ด์ฌ์ฌ๋ผ๊ณ ํ ์ ์๋ฐ. ํ์ง๋ง ์ฌ๊ธฐ์ ๊ฐ๋ฐ์๋ค์ด ๊ฐ์ฅ ์ซ์ดํ๋ ์ค๋ณต์ด ๋ฐ์ํ ํ๋ฅ ์ด ๋์์ง๋ค. ์ฐ๋ฆฌ๊ฐ DB Connection์ ๊ดํด์ CRUD๋ฅผ ์ํํ๊ธฐ ์ํด์ ๋ชจ๋ ๋ฉ์๋์ Connection c์ ์ฝ๋๊ฐ ๊ณ์ ์ค๋ณต๋๋ ํ์์ด ๋ฐ์ํ๋ค. ํก๋จ ๊ด์ฌ์ฌ๋? ํ์ง๋ง ํก๋จ ๊ด์ฌ์ฌ๋ ์ฌ๋ฌ ๋น์ฆ๋์ค.. 2020. 9. 5. [Spring Framework] DI Application์ ๋ง๋ค์ด๋ณด์. ์ด๋ฒ ๊ธ์ ์์ค ์ฝ๋๋ SKplanet Tacademy - Spring Framework Basic ๋์์ ๊ฐ์ ์๋ฃ์ ์๋ ์์ค์ฝ๋๋ฅผ ๊ฐ์ ธ๋ค๊ฐ ์ฌ์ฉํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ง๋ ์๊ฐ IoC ์ปจํ ์ด๋์ DI์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ๊ณผ ์ฉ์ด๋ค์ ๋ํด์ ์์๋ณด์๋ค. ์ด์ ์ค๋์ Ioc Container(DI Container)๋ฅผ ์ด๋ป๊ฒ Spring์์ ์ฌ์ฉํ๋์ง ์์๋ณด์. POJO ํด๋์ค ์์ฑ ์ค์ ๋ฉํ์ ๋ณด XML ์์ฑ DI ํ ์คํธ ํด๋์ค ์์ฑ POJO ํด๋์ค์ ๋ค์ด์ด๊ทธ๋จ ์ฐ๋ฆฌ๊ฐ ์์ ๋ก ๊ตฌ์ฑํ POJOํด๋์ค์ ๋ค์ด์ด๊ทธ๋จ์ ์๋์ ๊ฐ์ ํํ๋ก ๋ํ๋ผ ์ ์๋ค. Hello.class Printer.interface StringPrinter.class ConsolePrinter.class beans.xml :: XML ์ค์ .. 2020. 9. 5. [Spring Framework] Spring์ ํต์ฌ IoC/DI์ ๋ํด์ ์์๋ณด์. ์ฐ๋ฆฌ๋ ์ง๋ ์๊ฐ ๋ฌด์์ด Framework์ด๋ฉฐ ์ Spring์ด์ด์ผ ํ๋๊ฐ์ ๋ํด์ ์์๋ณด์๋ค. Framework์ ํน์ฑ์ด IoC, ์ฆ ์ ์ด์ ์ญ์ ์ด๋ผ๊ณ ํ์๋๋ฐ ์ค๋์ ๊ทธ ์ ์ด์ ์ญ์ ์ ์๋ฏธ์ ์ด๋ป๊ฒ ํ๋ฉด ์ ์ด๋ฅผ ์ญ์ ์ํฌ ์ ์๋์ง์ ๋ํ DI์ ๋ํด ์์๋ณด๋ ค ํ๋ค. ๊ฒฐ๋ก ์ ๋ฏธ๋ฆฌ ๋ง ํ์๋ฉด Spring IoC Container๋ ๋ฉํ๋ฐ์ดํฐ์ ์ค์ ์ ํตํด์ Bean์ ๊ด๋ฆฌํ๋ค. ์ง๊ธ ์ด ๋ง์ ํ๋๋ ์ดํดํ์ง ๋ชปํ๋ ๊ฒ์ด ์ ์์ด๋ค. ์ฐ๋ฆฌ๋ ํ๋์ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ์ง๋ฉดํ์ผ๋ ํ๋ ํ๋ Divide And Conquer ๋ฅผ ํด๋ณด์ ์ฐ๋ฆฌ๋ ์์ ๋ฌธ์ฅ์ ์๊ฒ ๋๋ ๋ณผ ๊ฒ์ด๋ค. IoC Container Bean ๋ฉํ๋ฐ์ดํฐ ์ด 3 ๊ฐ์ง๋ง ์๋ฉด ์์ ๋ฌธ์ฅ์ ๋ํ ์ดํด๊ฐ ์กฐ๊ธ ๊ฐ ๊ฒ ๊ฐ๋ค. IoC Container Fram.. 2020. 9. 4. [Spring Framework] ์ Spring์ธ๊ฐ? Spring์ ์์ํ๊ธฐ ์ ์ ์์๋ณด์ ์ด๋ฒ ๊ธ์ GDG Spring Framework Study์์ ์ฌ์ฉํ๊ฒ ๋ Spring ๊ธฐ์ ์ ์ฌ์ฉํ๊ธฐ ์ ์ ๊ณตํต์ ์ผ๋ก ์์์ผํ Spring์ ์ญ์ฌ์ ๋ํด์ ์ ์ ์ด์ผ๊ธฐํด๋ณด๋ ค ํ๋ค. Framework vs Library ์ผ๋จ Spring์ ์ฌ์ฉํ๊ธฐ์ ์ ๋ฌด์์ด Library์ด๊ณ ์ Framework์ ์ ์ฌ์ฉํด์ผ ํ๊ณ ์ด๋ป๊ฒ ํ์ํ๋์ง๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ข๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋จ์ ํ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ๋ค์ ์งํฉ์ ๋งํ๋ค. Library ์ฐ๋ฆฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ก๊ทธ๋๋ฐ์์ ๊ธฐ์กด์ ๋ง๋ค์ด์ง ํจ์๋ฅผ ์ฌํ์ฉํจ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์ ์ํ๋ค. Framework ์ ํ๋ ์์ํฌ๊ฐ ํ์ํ๋์ง๋ ํ ๋จ์ด๋ก ์ ๋ฆฌํ์๋ฉด Choas State -> Reusable State ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๊ฒฐ๊ตญ ํ๋ ์์ํฌ๋ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๋ก ํ๋์ ๋ผ๋๋ฅผ .. 2020. 9. 3. ์ด์ 1 2 3 4 5 6 7 8 9 ๋ค์