π Java & Kotlin & Spring53 Spring μμ @Async λ₯Ό μ¬μ©ν λλ ThreadPoolTaskExecutor λ₯Ό λ±λ‘ν΄μ£Όμ TL;DR μ΄λ² κΈμ ν΅μ¬μ μμ½νλ©΄ λ€μκ³Ό κ°λ€ @Async μ? Spring μμ λΉλκΈ° μμ μ μ½κ² μ€νν μ μλλ‘ λμμ£Όλ κΈ°λ₯ μ ThreadPoolTaskExecutor λ₯Ό λ±λ‘ν΄μΌ ν κΉ? Spring μ κΈ°λ³Έ λΉλκΈ° μ²λ¦¬ Executor λ λ§€λ² μλ‘μ΄ thread λ₯Ό μμ± ThreadPool μ μ΄μ©ν νμκ° μμ μ¬μ μ§μ Executor μ ThreadPoolExecutor Spring μ TaskExecutor ThreadPoolExecutor μ΄ν΄νκΈ° μ ννλ ThreadPoolExecutor μμμ μ΄λ€ λ‘μ§μ μν΄ μλ‘μ΄ thread λ₯Ό λ§λλμ§ μμμΌ ν¨ μ€μ μ λ°λΌ single thread μ²λΌ λμν μ μμ μ μ ν ThreadPoolTaskExecutor μ μ€μ κ° μ°ΎκΈ°.. 2024. 4. 17. [Spring] ApplicationEventPublisher λ₯Ό μ΄μ©ν΄μ Event λ₯Ό λ°ννλ©΄ μ΄λ€ μΌμ΄ μΌμ΄λ κΉ ν΄λΉ κΈμ μ 체 μμ€μ½λλ github μμ νμΈν μ μμ΅λλ€. README λ₯Ό μ°Έμ‘°νμΈμ λͺ©μ°¨ λκΈ° There is No Magic in spring λκΈ° μ΅κ·Όμ DDD λ₯Ό νμ΅νλ©΄μ λλ©μΈ μ΄λ²€νΈλΌλ κ²μ μκ² λμλ€. κ·Έλ¬λ©΄μ Spring μμ ν VM μμμ μ΄λ²€νΈλ₯Ό λ°ννκ³ ν΄λΉ μ΄λ²€νΈλ₯Ό handling νλ μ½λλ₯Ό μ νκ³ , κ·Έμ κ΄λ ¨ν΄μ μ¬λ¬ μ€μ΅μ ν΄λ³΄λ μ€ Spring μμ 무μΈκ° Magic μ΄ μΌμ΄λκ³ μλκ² κ°μ λλμ λ°μλ€. κΈ΄ λ§ νμ μμ΄ μλμ μ½λλ₯Ό νμΈν΄λ³΄μ. @Entity(name = "orders") public class Order { public static Order create() { return new Order(); } @Id private Long id; .. 2022. 8. 15. [Distributed Tracing] Messaging νκ²½μμμ λΆμ° μΆμ μ€μ΅ λ³Έ κΈμ λ§μ΄ν¬λ‘μλΉμ€μ λΆμ° μΆμ μ리μ¦λ‘ μ΄λ‘ κ³Ό μ€μ΅μ΄ ν¨κ» ν¬ν¨λ μ리μ¦μ λλ€. μλ λͺ©μ°¨μ νμλ κΈμ λͺ¨λ μ°Έκ³ νλ©΄ μ’μ΅λλ€. λͺ©μ°¨ Distributed Tracing, λΆμ° μΆμ μ΄λ? Spring Cloud Sleuth μ Zipkin Sleuth λ‘ Http νκ²½μ λΆμ° μΆμ μ€μ΅ Sleuth λ‘ Messaging νκ²½μ λΆμ° μΆμ μ€μ΅ μ€μ΅μ λν μμ€μ½λλ₯Ό νμΈνμκ³ μΆλ€λ©΄ μ€μ΅ githubμμ νμΈνμ€ μ μμ΅λλ€. Messaging νκ²½ μμμ λΆμ° μΆμ μ€μ΅ μ§λ μκ° μ°λ¦¬λ HTTP νκ²½μμμ λΆμ° μΆμ μ λν΄μ μμ보μλ€. λ€μ νλ² κ°λ΅μ μΈ μν€ν μ²μ λν΄μ νμΈν΄λ³΄μ μ μν€ν μ²λ₯Ό ꡬλΆνμλ©΄ 2κ°μ λΆλΆμΌλ‘ λλ μ μλ€. HTTP API Messaging μ΄λ²μλ HTTP.. 2022. 5. 1. [Distributed Tracing] HTTP νκ²½μμμ λΆμ° μΆμ μ€μ΅νκΈ° λ³Έ κΈμ λ§μ΄ν¬λ‘μλΉμ€μ λΆμ° μΆμ μ리μ¦λ‘ μ΄λ‘ κ³Ό μ€μ΅μ΄ ν¨κ» ν¬ν¨λ μ리μ¦μ λλ€. μλ λͺ©μ°¨μ νμλ κΈμ λͺ¨λ μ°Έκ³ νλ©΄ μ’μ΅λλ€. λͺ©μ°¨ Distributed Tracing, λΆμ° μΆμ μ΄λ? Spring Cloud Sleuth μ Zipkin Sleuth λ‘ Http νκ²½μ λΆμ° μΆμ μ€μ΅ Sleuth λ‘ Messaging νκ²½μ λΆμ° μΆμ μ€μ΅ μ€μ΅μ λν μμ€μ½λλ₯Ό νμΈνμκ³ μΆλ€λ©΄ μ€μ΅ githubμμ νμΈνμ€ μ μμ΅λλ€. Spring Cloud Sleuth λ₯Ό μ΄μ©ν HTTP νκ²½μ λΆμ° μΆμ μ΄λ²μ μ§λ μκ°μ μμ보μλ λΆμ° μΆμ μ λν μ€μ΅μ μ§νν΄λ³΄λ € νλ€. μ°μ κ°λ΅μ μΈ μν€ν μ²λ λ€μκ³Ό κ°λ€ μ μν€ν μ²λ₯Ό ꡬλΆνμλ©΄ 2κ°μ λΆλΆμΌλ‘ λλ μ μλ€. HTTP API Messaging.. 2022. 5. 1. λ€νμ±μ μν instanceof λ₯Ό Generic μΌλ‘ μ κ±°νλ λ°©λ² λͺ©μ°¨ μλ‘ instanceof λ? μ½λμμ instanceof λ₯Ό λ껴보μ Generic μ μ΄μ©νμ¬ μ°μνκ² μ κ±°νκΈ° κ·ΈλΌμλ μ‘΄μ¬νλ λ¬Έμ μ νμ§λ§? μλ‘ μλ°μμ λ€νμ±μ μ΄μ©ν κ°μ²΄μ§ν₯μ νλ‘κ·Έλλ°μ νλ€λ³΄λ©΄ μ’ μ’ νΉμ κ°μ²΄κ° μ§μ λ μ νμ μΈμ€ν΄μ€μΈμ§ νμΈν΄μΌ νλ κ²½μ°κ° μλ€. κ·Έ κ²½μ° μ°λ¦¬λ μ¬λ¬κ°μ§ μ νμ§κ° μμ§λ§, μ€λμ instanceof μ λν΄ μ§μ€νκ³ μ΄μΌκΈ°ν΄λ³΄λ € νλ€. λ€νμ±μ μ΄μ©ν νλ‘κ·Έλλ°μ νλ€ λ³΄λ©΄ νΉμ νμΌλ‘ λ³ννκΈ° μν΄ λͺκ°μ§ μμ μ ν΄μΌ νλλ°, κ·Έμ€ λνμ μΈ κ²μ΄ λ°λ‘ instanceof μ°μ°μμ΄λ€. instanceof λ? μμ λ§νλ― Java μμλ μ΄λ€ κ°μ²΄μ νΉμ type μ λν΄μ λμΌν type μΈμ§ νμΈν μ μλ μ°μ°μ instanceof μ°μ°μ.. 2022. 4. 3. [μ‘°κΈ λ κΉμ Java] JVMμ Runtime Data Area, Execution Engine, Garbage Collection μ λν΄μ μλ°λ₯Ό 곡λΆν΄λ³΄μλ€λ©΄ μ΅ν λ€μμ JVM, Java Virtual Machine μ λν΄μ μ΄μΌκΈ°ν΄λ³΄λ € νλ€. λ§μ°νκ² JVM μ΄ λμνκ³ JVMμ΄ μκΈ° λλ¬Έμ νλ«νΌμ λ 립μ μ΄λ©° Garbage Collection μΌλ‘ μ₯μ μ μ»μ μ μλ€κ³ μκ°νλ μ¬λλ€μ΄ λ§μ κ²μ΄λ€. μ€λμ JREμ ꡬμ±μμμΈ JVMμ΄ μ΄λ»κ² ꡬμ±λκ³ Garbage Collection μ΄ μ΄λ€ λ°©μμΌλ‘ λμνλμ§ μμλ³Ό κ²μ΄λ€. JVM μ΄λ? μ§λ 2λ²μ μκ°μ κ±°μ³ μ°λ¦¬λ Java Bytecodeμ Java ClassLoader μ λν΄μ μμ보μλ€. μ§λ μκ°μλ μ΄λ»κ² μλ° νμΌμ΄ μ»΄νμΌλμ΄ ν΄λμ€ νμΌλ‘ λ³νμ΄ λκ³ , μ΄λ»κ² ν΄λμ€λ‘λμ μν΄μ λμ μ μ¬λλ©° verification μ μννλμ§ μμ보μλ€. μ€λμ κ·Έ μ΄ν.. 2021. 12. 5. μ΄μ 1 2 3 4 Β·Β·Β· 9 λ€μ