๋ฐ์ํ ์ ์ฒด ๊ธ418 Modern Java: An In-Depth Guide from Java 8 to Java 21 Modern Java์ ๋ํด, Java 8 ~ Java 21๊น์ง์ ๋ณ๊ฒฝ์ง์ ์ ์ ๋ฆฌํด๋ณด๋ ํฌ์คํ ์ ๋๋ค. ํด๋น ํฌ์คํ ์ ์๋ ๋ธ๋ก๊ทธ๋ฅผ ๋ฒ์ญํ ํฌ์คํ ์ ๋๋ค.https://medium.com/@akineralkan/modern-java-an-in-depth-guide-from-version-8-to-21-by-akiner-alkan-f89b50e13c72 Modern Java: An In-Depth Guide from Version 8 to 21 | by Akiner AlkanDiscover Java’s evolution from 8 to 21, unveiling features like lambdas to sealed classes and records.medium.com ์๋ฐ 8์ ์์์ผ๋ก ํฅ๋ฏธ๋ก์ด ๊ธฐ๋ฅ๋ค์.. 2024. 9. 8. "์ค๋ฌด๋ก ํตํ๋ ํด๋ฆฐ ์ฝ๋" ๋์ ๋ฆฌ๋ทฐ ํ๋น๋ฏธ๋์ด์ ๋๋๋ฆฌ๋ทฐ์ด๋ค 2024๋ฅผ ํตํด 8์, ์ค๋ฌด๋ก ํตํ๋ ํด๋ฆฐ ์ฝ๋ (Clean Code Cookbook) ๋์๋ฅผ ์ ๊ณต ๋ฐ์ ์ฝ์ด๋ณด๊ฒ ๋์์ต๋๋ค. ์ฑ ์ ์ฝ 500p ์ ๋์ ๋ถ๋์ผ๋ก ์์ ํธ์ ์๋๊ณ ์, ํด๋ฆฐ ์ฝ๋์ ๋ํด ๊ด์ฌ์ด ๋ง๊ธฐ๋ ํ๊ณ , ์์ ์ ์ฝ์๋ ํด๋ฆฐ ์ฝ๋ ์๊ฐ๋ ๋์ ์ฝ์ด๋ณด๊ฒ ๋์๋ค์. ์ ๋ถ ์ฝ์ง๋ ๋ชปํ๊ณ , 60%์ ๋๋ง ์ฝ์ ์ํ์์ ๋ ์ฝ์ผ๋ฉด์ ๋ด์ฉ์ด ์ถ๊ฐ๋ ์ ์์ต๋๋ค. ๊ฒฐ๋ก ๋ถํฐ ๋ง์๋๋ฆฌ๋ฉด ํด๋ฆฐ ์ฝ๋ (Clean Code) ๋์์ ๋น์ทํ ๋ด์ฉ๋ค์ด ๋ง์์ด์ ํด๋ฆฐ ์ฝ๋๋ฅผ ์ฝ์๋ค๋ฉด, ๊ตณ์ด ์ด ์ฑ ์ ๋ณด์ง๋ ์์๋ ๋ ๊ฒ ๊ฐ์ต๋๋ค..(?) 2์ฅ ๊ณต๋ฆฌ ์ค์ 38p, ์ํํธ์จ์ด๋ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ๊ณผ ๊ฐ์ผ๋ฉฐ MAPPER (๋งคํผ) ๋ผ๋ ์ฝ์ด๋ก ํํํฉ๋๋ค.MAPPER (Model: Abstrac.. 2024. 8. 26. ์ผํธ ๋ฐฑ์ Tidy First? ๋์ ๋ฆฌ๋ทฐ ํ๋น๋ฏธ๋์ด์ ๋๋๋ฆฌ๋ทฐ์ด๋ค2024๋ฅผ ํตํด 5์, ์ผํธ ๋ฐฑ์ Tidy First? ๋์๋ฅผ ๋ฐ์ ์ฝ๊ฒ ๋์์ต๋๋ค. ์ฑ ์ ๊ต์ฅํ ์๊ณ , ์ ๊ธฐํ๊ฒ 2๊ถ์ผ๋ก ๋์ด์๋๋ฐ ๊ฐ๊ฒฉ์ ๊ฝค๋ ๋น์ธ๋ค์.๊ทธ๋์ ์ฝ๋ ์ ๋ฆฌํ๋ ์์ ์ ๋ง์ด ํ๋ค๋ณด๋, ์ฑ ์์ ๊ณต๊ฐ ๊ฐ๋ ๋ถ๋ถ์ด ๊ฝค ์กด์ฌํ๊ณ , ๊ถ๊ธ์ฆ์ ๋ํด์๋ ์ด๋์ ๋ ํด์ํ ์ ์์์ต๋๋ค. ๋ง์ง๋ง ์ฅ์ ์ด๋ก ๋ถ๋ถ์์๋ ๊ธ์ต, ์ต์ ๋ฑ์ ๊ฐ๋ ์ด ๋์ค๋๋ฐ, ๊ฐ์ธ์ ์ผ๋ก ๊ณต๊ฐ๊ฐ๋ ๋ถ๋ถ์ด ๋ง์ง๋ ์์์ ๋น ๋ฅด๊ฒ ๋๊ฒผ๋ ๊ฒ ๊ฐ๋ค์.. ์๋๋ ๋์์์ ๊ด์ฐฎ์๋, ์ ๋ฆฌํด๋์ ๋ฌธ์ฅ๋ค์ ๋๋ค. Part 01, ์ฝ๋ ์ ๋ฆฌ๋ฒ18p, ์์ ํ์ง ์์ ํ๋์ ํ๋ฉด์ ๋ถ์ํดํ๋ ๊ฒ์ ๊ฒฝ์ํ๊ฒ ์์ ์ ํ์ ํ๋ฉฐ ์ฐ๋ํ๊ฒ ์๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ซ์ต๋๋ค. ์์ฆ ํนํ๋ ๋ง์ด ๋๋ผ๋ ๊ฐ์ ์ด๋ผ ๋์ฑ ๊ณต๊ฐ์ด ๊ฐ๋ ๋ฌธ์ฅ์ธ ๊ฒ ๊ฐ๋ค.. 2024. 5. 25. Spring @RequestBody ํ๋ ๋ฐ์ธ๋ฉ์ด ๋์ง ์๋ ์ด์ (feat. Lombok, Jackson์ ๋ค์ด๋ฐ ์ฐจ์ด) ๊ฐ์ Spring์์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ JSON ํ์์ผ๋ก ๋ฐ๊ณ , @RequestBody๋ฅผ ์ฌ์ฉํ์ฌ JSON body์ ๋ฐ์ดํฐ๋ฅผ Java Object์ ํ๋์ ์ญ์ง๋ ฌํ(Deserialize)๋ฅผ ํตํด ๊ฐ ๋ฐ์ดํฐ๊ฐ ์ ์์ ์ผ๋ก ๋ฐ์ธ๋ฉ์ด ์ด๋ฃจ์ด์ง๊ฒ ๋ฉ๋๋ค. ํ์ง๋ง, ํ๋์ ํน์ ๋ค์ด๋ฐ + Lombok์ @Getter๋ฅผ ์ฌ์ฉํ ๋ ๋ฐ์ธ๋ฉ์ด ์ ์์ ์ผ๋ก ๋์ง ์๋ ์ด์๊ฐ ์กด์ฌํ๋๋ฐ์, ์ด์ ๊ด๋ จํ์ฌ ๊ฐ๋ตํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ### Send POST request with json body POST http://localhost:8080/api/v1/test Content-Type: application/json { "pId": "pId", "poId": "poId" } ์๋ฅผ ๋ค์ด, ์์ ๊ฐ์ ์๋ฒ ์ฝ๋๊ฐ ์กด์ฌํ๊ณ ํด๋ผ.. 2024. 3. 20. Spring Swagger(springdoc-openapi) Unable to render this definition ์ค๋ฅ Spring ์์ ๋ฌธ์ํ๋ฅผ ์ถ๊ฐํ๊ณ ์ Swagger(Springdoc-openapi)๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ํ๋๋ฐ, ์๋์ ๊ฐ์ ๋ฌธ๊ตฌ๊ฐ ๋์ต๋๋ค. Unable to render this definition ... ์ค์ api-docs URL๋ก ์ ๊ทผํด๋ณด๋ฉด, ์๋์ ๊ฐ์ด ๋ฉ์์ง๊ฐ ์ ์์ ์ผ๋ก ์ปจ๋ฒํฐ๊ฐ ์๋์ด ๋์ค๋ ๋ฏ ํ ํ์์ด ๋ฐ์ํฉ๋๋ค. ํ์ฌ ํ๋ก์ ํธ์์๋ MessageConverter ๋ฅผ Customํ์ฌ ์ฌ์ฉํ๊ณ ์๊ณ , ๋๋ต์ ์ผ๋ก ์๋์ ๊ฐ์ด ์ฌ์ฉ์ค์ ๋๋ค. @Override public void configureMessageConverters(List 2024. 3. 4. ์ ๊ท ์์คํ ๊ตฌ์ถํ๊ธฐ (feat. MSA, ๋ฐฑ์คํผ์ค) 2023๋ , ํ ๋ด๋ถ์์๋ `ํฉํ ๋ฆฌ` ๋ผ๊ณ ๋ถ๋ฅด๋ ์ ๊ท ์์คํ ์ ๊ตฌ์ถํ์ต๋๋ค.๊ฐ๋ฐ์๋ก์ ๊ฒฝ๋ ฅ์ด ๋ง์ง๋ ์์ง๋ง, ๊ฐ์ฅ ๊ฒฝํ์ด ์ข์๋ ํ๋ก์ ํธ์๊ณ , ์ฒ์์ผ๋ก ํ๋ก์ ํธ ๋ค์ด(?) ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ ์๋ฐ๊ธฐ ์ง๋ ํ ๊ฐ๋ฐ ๋ฒ์์์ ๊ฒช์๊ธฐ์, ํ๋ก์ ํธ ์ด๊ธฐ์๋ ๋งค์ฐ ์๊ทน์ ์ผ๋ก ์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.ํ์ง๋ง ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ์ด๋ ์ ๋ ๋ฒ์์์ ํ๋ณตํ๊ณ , ์ ์ฐจ ์ ๊ทน์ ์ผ๋ก ์ฐธ์ฌํ๋ฉฐ ์ผ์ ์ ๋น ๋ฏํ์ง๋ง ๊ต์ฅํ ์ฌ๋ฐ๊ณ ์ฆ๊ฒ๊ฒ ํ์๋๋ฐ์, ๊ด๋ จํ์ฌ ๊ฐ๋จํ ์ ๋ฆฌํด ๋ณด๊ณ ์ ํฉ๋๋ค. ์ ๊ท ์์คํ ๋ฐฐ๊ฒฝ๊ธ์ก๊ถ์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ธฐํํฐ์ฝ์, ์ ํด์ง ๊ธ์ก ๋ด์์ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์ํ์ ๋๋ค.์ ์คํ๋ฒ ์ค๋ฅผ ์๋ก ๋ค์๋ฉด 20,000์ ํ๋ ๋ด์์ ์์ ๋กญ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์คํ๋ฒ ์ค ๊ธ์ก๊ถ ์ํ์ ๋๋ค. ํ์ง๋ง ํ์ฌ ๊ธ์ก๊ถ ๊ด๋ จํด.. 2024. 1. 19. Spring ์ค์ผ์ฅด๋ฌ ๋ก์ง์ด ๋ฉํฐ ์๋ฒ ์ค ํ ์๋ฒ์์๋ง ์คํ๋๋๋ก ์ค์ ํ๊ธฐ ์๋น์ค๋ฅผ ์ด์ํ๋ฉด ์ต์ํ 2๋ ์ด์์ ๋ฉํฐ ์๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ ์ด์์ ํฉ๋๋ค. ์๋น์ค์์ ํน์ ์๊ฐ์๋ง ์ํ๋๋ ๋ฐฐ์น์ฑ ๋ก์ง์ด ์กด์ฌํ๋ค๋ฉด, ๋ฐฐ์น ์๋ฒ๋ฅผ ๋ณ๋๋ก ๋๊ธฐ๋ ํ์ง๋ง ํ๋์ ํ๋ก์ ํธ์์ ์ค์ผ์ฅด๋ฌ๋ฅผ ์ค์ ํ๊ธฐ๋ ํฉ๋๋ค. ์ด๋ ์ค์ผ์ฅด๋ฌ๋ฅผ ์ ์ฉํ๋ฉด ์ค์ ์ด์ ํ๊ฒฝ์์ A, B ์๋ฒ ๋ชจ๋ ์ค์ผ์ฅด์ด ๋๋ฉด์ ๋ก์ง์ด 2๋ฒ ์คํ๋ ์ ์๋๋ฐ์, ์ด์ ๊ด๋ จํ์ฌ ์กฐ๊ธ ์ฐพ์๋ณด๋ ๋๋ถ๋ถ์ ํฌ์คํ ์์ ShedLock? ์ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ๋ ๋ฏํ๋ฐ, Spring Profile ์ ์ฌ์ฉํ๋ฉด ๋ ๊ฐ๋จํ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์์ ๊ฐ์ด ์ค์ผ์ค๋ฌ๊ฐ ์กด์ฌํ๋ ์ปดํฌ๋ํธ์ @Profile ์ ์ค์ ํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ๋ ํ๊ฒฝ๋ณ์์ ์ค์ ํ๋ฉด ๋ฉ๋๋ค. IntelliJ Run/Debug Configurations Application.. 2023. 12. 30. Java ํด๋์ค ์ค๊ณ ์์ ํ๊ฒ ์ ํ๊ธฐ (feat. ์์ง๋) ์ง๋ ํฌ์คํ Java ํด๋์ค ์ค๊ณ ์์ ํ๊ฒ ์ ํ๊ธฐ ํธ์์๋ ํด๋์ค ์ค๊ณ์ ๊ด๋ จํ์ฌ ๋ค์ ๋ด์ฉ๋ค์ ์ดํด๋ดค์๋๋ฐ์, ์์ฑ์๋ฅผ ํตํด ์ ์์ ์ธ ๊ฐ ์ค์ ํ๊ธฐ ๋ณ์๋ฅผ ๋ถ๋ณ์ผ๋ก ๋ง๋ค์ด์ ์์ํ์ง ๋ชปํ ๋์ ์๋ฐฉํ๊ธฐ ๋ถ๋ณ์ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ, ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ๋ฉ์๋ ๋งค๊ฐ๋ณ์์ ์ง์ญ ๋ณ์๋ ๋ถ๋ณ์ผ๋ก ๋ง๋ค๊ธฐ ๋ฉ์๋์ ์๋ชป๋ ๊ฐ์ ์ ๋ฌ์ ์๋ฐฉํ๊ธฐ ์ด๋ฒ ํฌ์คํ ์์๋ ์์ง๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํด๋์ค ์ค๊ณ์ ๊ด๋ จ๋ ๋ด์ฉ์ ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค. ์์ง๋๋, 'ํด๋์ค ๋ด๋ถ์ ์๋ ๋ฐ์ดํฐ์ ๋ก์ง ์ฌ์ด์ ๊ด๊ณ๊ฐ ์ผ๋ง๋ ๊ฐํ์ง ๋ํ๋ด๋ ์งํ' ๋ก ์ ์ํฉ๋๋ค. 1. static ๋ฉ์๋ ์ค์ฉ static ๋ฉ์๋๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์๊ณ ์ฌ์ฉํ ์ ์๋ค๋ ํธ๋ฆฌํจ์ด ์์ง๋ง, ๋ค๋ฅธ ํํธ์ผ๋ก๋ ์์ง๋๊ฐ ๋ฎ์์ง ์ ์์ต๋๋ค. static ๋ฉ์๋.. 2023. 12. 20. Java ํด๋์ค ์ค๊ณ ์์ ํ๊ฒ ์ ํ๊ธฐ ํด๋์ค๋ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ด๊ธฐ ๋จ๊ณ๋ผ๊ณ ํ ์ ์์ ๊ฒ ๊ฐ์๋ฐ, ๊ฐ์ฒด ์งํฅ ์ธ์ด์์ ํด๋์ค๋ฅผ ํ์ฉํ์ฌ ์ค๊ณ๋ฅผ ์ ํ๊ธฐ ์ํด ์ด๋ ํ ์ ๋ค์ ๊ณ ๋ คํด์ผ ํ ์ง ์ดํด๋ด ๋๋ค ์์ ๋ ๊ธ์ก์ ๋ํ๋ด๋ Money ํด๋์ค๋ฅผ ํ ๋๋ก ์ค๊ณ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. 1. ์์ฑ์๋ฅผ ํตํด ์ ์์ ์ธ ๊ฐ ์ค์ ํ๊ธฐ ์์ ๊ฐ์ด ๋ชจ๋ ์ธ์คํด์ค ๋ณ์๋ฅผ ์ด๊ธฐํํ๋ ๋ฐ ํ์ํ ๋งค๊ฐ๋ณ์๋ค์ ๋ฐ๋ ์์ฑ์๋ฅผ ๋ง๋ค ์ ์๋๋ฐ, ์์ ๋ฌธ์ ์ ์ ๋งค๊ฐ๋ณ์๋ก ์๋ชป๋ ๊ฐ์ด ์ ๋ฌ๋ ์ ์๋ค๋ ์ ์ ๋๋ค. ์์ ๊ฒฝ์ฐ ๊ฐ์ฒด๋ ์ ์์ ์ผ๋ก ์์ฑ๋์ง๋ง, ํ๋ก๊ทธ๋จ์ด ๋์ํ์ฌ ๊ฐ์ฒด๊ฐ ์ฌ์ฉ๋๋ค๋ฉด ๋ฒ๊ทธ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์, ์๋ชป๋ ๊ฐ์ด ์ ์ ๋์ง ๋ชปํ๊ฒ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ์งํํฉ๋๋ค. ๊ธ์ก (amount): 0 ์ด์์ ์ ์ ํตํ (currency): null .. 2023. 12. 16. Spring @ComponentScan ๋์ ๊ณผ์ Spring์์ ํด๋์ค์ @Configuration, @RestController, @Service ๋ฑ์ ์ด๋ ธํ ์ด์ ์ ์ ์ธํ๋ฉด ์คํ๋ง์ ํด๋น ์ด๋ ธํ ์ด์ ๋ค์ ์ค์บํด์ ๋น์ผ๋ก ๋ฑ๋ก์ ํด์ฃผ๋๋ฐ์, ์ด๋ฌํ ์ญํ ์ ํ๋ ๊ฒ์ด @ComponentScan ์ด๋ ธํ ์ด์ ์ ๋๋ค. @ComponentScan ์ ๋จ์ด ๊ทธ๋๋ก @Component ์ด๋ ธํ ์ด์ ์ด ๋ถ์ ํด๋์ค๋ค์ ์ค์บํ์ฌ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋๋ฐ, ์์ ์ธ๊ธ๋ ์ด๋ ธํ ์ด์ ๋ค์ ๋ชจ๋ ๋ด๋ถ์ @Component ์ด๋ ธํ ์ด์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์์ ๊ฐ์ ์ด๋ ธํ ์ด์ ๋ค์ ์ค์ ํ๋ฉด ์คํ๋ง์์๋ ์ด๋ป๊ฒ ์ปดํฌ๋ํธ๋ค์ ์ค์บํ๊ณ , ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. @ComponentScan ComponentScan ์ด๋ ธํ ์ด์ ์ ์กด์ฌํ๋ ์ฃผ์์ผ๋ก, ๋๋ต์ ์ธ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.. 2023. 12. 9. ์ด์ 1 2 3 4 5 6 ยทยทยท 42 ๋ค์ ๋ฐ์ํ