λ°μν μ 체 κΈ418 Spring Bean μ΄ λ±λ‘λλ κ³Όμ μ€νλ§μ μ¬μ©νλ€ λ³΄λ©΄ @Configuration, @Component, @Bean λ±μ μ΄λ Έν μ΄μ μ ν΅ν΄ μ€νλ§ μ»¨ν μ΄λμ λΉμ λ±λ‘νλλ°μ, μ΄λ ν κ³Όμ μ ν΅ν΄ Bean μ΄ λ±λ‘λλμ§ μ΄ν΄λ³΄κ² μ΅λλ€. ν μ€νΈλ μμ κ°μ΄ @Configuration μ΄λ Έν μ΄μ μ μ€μ ν TestConfiguration ν΄λμ€κ° μ‘΄μ¬νκ³ , main λ©μλλ₯Ό ν¬ν¨ν Main ν΄λμ€μμ μ΄λ Έν μ΄μ κΈ°λ°μ AnnotationConfigApplicationContext κ°μ²΄λ₯Ό μμ±νκ³ , μ΄ μμ±μμλ TestConfiguration κ°μ²΄λ₯Ό μ£Όμ ν©λλ€. μ κ³Όμ μ ν΅ν΄ μ΄λ Έν μ΄μ κΈ°λ°μ Spring Bean μ΄ λ±λ‘λλ κ³Όμ μ μ΄ν΄λ³΄κ² μ΅λλ€. BeanFactory BeanFactory μΈν°νμ΄μ€λ μ€νλ§ νλ μμν¬μμ μ€νλ§ .. 2023. 12. 2. μ€νλ§μμ ν΄λΌμ΄μΈνΈλ‘ λ°μ΄ν° μ λ¬ μ νκΈμ΄ κΉ¨μ§λ μ΄μ (ISO-8859-1) μλ νμΈμ, μ΅κ·Ό ν΄λΌμ΄μΈνΈ(Vue) μ μλ²(Spring Boot) μ°λ μ μλ²μμ νκΈ λ°μ΄ν°λ₯Ό μ λ¬νλ©΄ ν΄λΌμ΄μΈνΈμμ νκΈμ΄ κΉ¨μ§λ μ΄μκ° λ°μνμλλ°μ, μ΄μ κ΄λ ¨νμ¬ κ°λ΅ν μ λ¦¬ν΄ λ³΄μμ΅λλ€. μμΈ HttpMessageConverter μΈν°νμ΄μ€λ Springμμ HTTP request, response λ₯Ό λ³νν΄ μ£Όλ μΈν°νμ΄μ€μΈλ°μ, ν΄λΉ ν¬μ€ν μ μ΄ν΄νλλ° νμν λ΄μ©μ΄λΌ κ°λ΅νκ²λ§ μ€λͺ νκ³ λμ΄κ°κ² μ΅λλ€. μ€νλ§μμ νν μ¬μ©νλ @RestController μ΄λ Έν μ΄μ μ ν¬ν¨λμ΄ μλ @ResponseBody μ΄λ Έν μ΄μ μ μ¬μ©ν κ²½μ°, HttpMessageConverter μ΄ λμνκ³ λ°ν νμ μ λ°λΌ μ μ ν ꡬνμ²΄κ° μ¬μ©μ΄ λ©λλ€. λνμ μΌλ‘λ ByteArrayHttpMessageC.. 2023. 11. 20. Bean Validation (Hibernate Validation) Bean Validationμ νλμ κ°, λ²μ λ±μ κ²μ¦νκ³ μ ν λ μ μ©νκ² μ¬μ©ν μ μλ μ΄λ Έν μ΄μ λ° μΈν°νμ΄μ€μ λͺ¨μ μ΄ κΈ°μ μ ꡬν체 μ€ μΌλ°μ μΌλ‘ μ¬μ©νλ ꡬνμ²΄κ° Hibernate Validator https://docs.jboss.org/hibernate/validator/6.2/reference/en-US/html_single/#validator-defineconstraints-spec Hibernate Validator 6.2.5.Final - Jakarta Bean Validation Reference Implementation: Reference Guide Validating data is a common task that occurs throughout all applicati.. 2023. 9. 30. λ§λ€λ©΄μ λ°°μ°λ νλ‘ νΈ μ»¨νΈλ‘€λ¬(Front Controller) ν¨ν΄ μλ νμΈμ, μ΄λ² ν¬μ€ν μμλ κΈ°μ‘΄ Servlet κΈ°λ°μ MVC νλ μμν¬λ₯Ό μ€νλ§μ νλ‘ νΈ μ»¨νΈλ‘€λ¬ ν¨ν΄μ μ§μ λ§λ€μ΄λ³΄λ©΄μ μ μ§μ μΌλ‘ κ°μ νλ κ³Όμ μ΄ν΄λ³΄κ² μ΅λλ€. ν΄λΉ ν¬μ€ν μ μλ κ°μλ₯Ό μ°Έκ³ νμ¬ μμ±νμ΅λλ€! https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard μ€νλ§ MVC 1νΈ - λ°±μλ μΉ κ°λ° ν΅μ¬ κΈ°μ - μΈνλ° | κ°μ μΉ μ ν리μΌμ΄μ μ κ°λ°ν λ νμν λͺ¨λ μΉ κΈ°μ μ κΈ°μ΄λΆν° μ΄ν΄νκ³ , μμ±ν μ μμ΅λλ€. μ€νλ§ MVCμ ν΅μ¬ μ리μ ꡬ쑰λ₯Ό μ΄ν΄νκ³ , λ κΉμ΄μλ λ°±μλ κ°λ°μλ‘ μ±μ₯ν μ μμ΅λλ€., μ www.inflearn.com μ€νλ§μμ νλ‘ νΈ μ»¨νΈλ‘€λ¬λΌκ³ λΆλ¦¬λ ν¨ν΄μ λͺ¨λ HTTP μμ².. 2023. 8. 16. TDD, ν΄λ¦° μ½λ with Java (λ―Έμ 3, 4 - FP, OOP, 리ν©ν°λ§) μΈ λ²μ§Έ λ―Έμ μΈ μ¬λ€λ¦¬ νκΈ°λ μλ° 8μ μ€νΈλ¦Ό, λλ€λ₯Ό μ¬μ©ν΄ ν¨μν νλ‘κ·Έλλ°μ νμ©νλ κ²μ΄ μ£Όλ λͺ©νμ λλ€. λ€ λ²μ§Έ λ―Έμ μΈ μκ°μ μ²μ λ κ±°μ μ½λλ₯Ό 리ν©ν°λ§ νλ κ²μ΄ μ£Όλ λͺ©νμ λλ€. μΈ λ²μ§Έ λ―Έμ μΈ μ¬λ€λ¦¬ νκΈ°μμ κ²½νν΄μΌ ν λͺ©νλ λ€μκ³Ό κ°μ΅λλ€. μλ° 8μ μ€νΈλ¦Ό, λλ€λ₯Ό νμ©ν ν¨μν νλ‘κ·Έλλ° In -> Out, Out -> In λ°©μμΌλ‘ λλ©μΈ κ°μ²΄λ₯Ό μ€κ³νλ κ²½ν μ± μ μ£Όλ μ€κ³ κΈ°λ° μΈν°νμ΄μ€λ₯Ό νμ©ν νλ‘κ·Έλλ° λ€ λ²μ§Έ λ―Έμ μΈ μκ°μ μ²μμ κ²½νν΄μΌ ν λͺ©νλ λ€μκ³Ό κ°μ΅λλ€. λ κ±°μ μ½λλ₯Ό 리ν©ν°λ§ ν λ ν μ€νΈ μ½λλ₯Ό ν΅ν΄ 보νΈνλ κ²½ν Q&A μλΉμ€μ μ§λ¬Έ μμ νκΈ° κΈ°λ₯μ λ κ±°μ μ½λλ₯Ό 리ν©ν°λ§νλ κ²½ν DB ν μ΄λΈλ³΄λ€ λλ©μΈ λͺ¨λΈμ TDD κΈ°λ°μΌλ‘ λ¨Όμ κ°λ°ν΄ 보λ κ²½ν.. 2023. 8. 7. TDD, ν΄λ¦° μ½λ with Java (λ―Έμ 2. λ‘λ - TDD) μ§λλ² λ―Έμ 1. μλμ°¨ κ²½μ£Ό - λ¨μ ν μ€νΈλ₯Ό μ§ννκ³ , μ΄μ΄μ λ―Έμ 2. λ‘λλ₯Ό μ§ννμ΅λλ€. λ―Έμ 1보λ€λ λΉ λ₯΄κ² μ§ννμ§λ§, λͺ¨λ λ―Έμ μ λλ΄κΈ° μν΄μλ μ‘°κΈ λ μλλ₯Ό λ΄μΌκ² λ€μ... π 1λ¨κ³ - λ¬Έμμ΄ μ€μ΅ 1λ¨κ³λ κ°λ¨ν λ¬Έμμ΄ μ¬μΉ μ°μ° κ³μ°κΈ°λ₯Ό ꡬννλ λ―Έμ μ λλ€. μλ₯Ό λ€μ΄ 2 + 3 * 4 / 2μ κ°μ λ¬Έμμ΄μ μ λ ₯ν κ²½μ° 2 + 3 * 4 / 2 μ€ν κ²°κ³ΌμΈ 10μ μΆλ ₯ν΄μΌ ν©λλ€. νμΌ λμλ κ°νμ μΆκ°νμ μλ λ§ν¬λ₯Ό μ°Έκ³ ν΄ λ³΄λ©΄ κ°νμ νλμ νμ μ μνλ νμ€μΌλ‘ κ°νμ΄ μλ€λ©΄ λλμ§ μμ νμΌλ‘ κ°μ£ΌνκΈ° λλ¬Έμ νμΌμ λμλ κ°νμ μΆκ°νλ κ²μ΄ μ’λ€κ³ ν©λλ€. https://velog.io/@doondoony/posix-eol κ·Έλμ νμΌ λμ κ°νμ μΆκ°νλ κ².. 2023. 5. 13. TDD, ν΄λ¦° μ½λ with Java (λ―Έμ 1. μλμ°¨ κ²½μ£Ό - λ¨μ ν μ€νΈ) 4μ μ΄λΆν° NEXTSTEPμμ μ§ννλ TDD, ν΄λ¦° μ½λ with Java κ³Όμ μ λ£κ³ μμ΅λλ€. μλ λΆν° κ³μ λ€μ΄μΌκ² λ€κ³ μκ°νλ€κ° μ¬ν΄ λ£κ² λμλλ°, λ§μΉ¨ λΉμ·ν μκΈ°μ λ²μμμ΄ μλ²λ €μ.. π 첫 λ²μ§Έ λ―Έμ λ κ΅μ₯ν μ€λ κ±Έλ Έλ€μ. ππ κ΅μ‘μμ μ§νν λ―Έμ λ€μ ν λλ‘ λ°°μ΄ λ΄μ© λ° νΌλλ°±μ λν΄ μ λ¦¬ν΄ λ³΄κ³ μ ν©λλ€. (νΉμ λ€λ₯΄κ² μκ°νμλ ν¬μΈνΈκ° μ‘΄μ¬νλ€λ©΄, λ§μν΄ μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€ π) 첫 λ²μ§Έ λ―Έμ μΈ μλμ°¨ κ²½μ£Ό - λ¨μ ν μ€νΈμλ μ΄ 5κ°μ λ―Έμ μ΄ μ‘΄μ¬νκ³ , κ° λ―Έμ λ§λ€ μ½λλ₯Ό μμ±νμ¬ PRμ 보λ΄λ©΄ 리뷰μ΄κ° μ½λ 리뷰λ₯Ό ν΄μ£Όλ μμΌλ‘ μ§νμ΄ λλλ°μ, μλμ°¨ κ²½μ£Ό λ―Έμ μ μννλ©° λ°μλ 리뷰 λ° μλ‘ μκ² λ λ΄μ©λ€μ λ€μκ³Ό κ°μ΅λλ€. 1λ¨κ³ - νμ΅ ν μ€νΈ μ€μ΅ 1λ¨κ³ λ―Έ.. 2023. 4. 25. Java Map - compute(), computeIfAbsent(), computeIfPresent() Map μΈν°νμ΄μ€μμ Java 8 λ²μ μ μΆκ°λ μΌλΆ APIμ λν΄ μ΄ν΄λ΄ λλ€. putIfAbsent() compute() computeIfPresent() computeIfAbsent() getOrDefault() ν΄λΉ μ½λλ Map μΈν°νμ΄μ€μ ꡬνμ²΄μΈ HashMapμ κΈ°μ€μΌλ‘ μ 리νμμ΅λλ€. 1. putIfAbsent(K key, V value) putIfAbsent() λ©μλλ λ€μ΄λ°μμ μ μΆν μ μλ―μ΄, λ€μκ³Ό κ°μ΄ λμν©λλ€. Keyκ° μ‘΄μ¬ν κ²½μ°: Value λ³κ²½ μμ΄ κΈ°μ‘΄μ μ‘΄μ¬νλ Keyμ Valueλ₯Ό 리ν΄ν©λλ€. Keyκ° μ‘΄μ¬νμ§ μλ κ²½μ°: Keyμ ν΄λΉνλ Valueλ₯Ό μ μ₯ν ν nullμ 리ν΄ν©λλ€. Mapμ ꡬνμ²΄μΈ HashMapμ 보면 putVal() λ©μλλ₯Ό ν΅ν΄ μ§νλκ³ ,.. 2023. 3. 13. Spring Batch (12) Retry π Spring Batch Retry (Tasklet κΈ°λ°) μμ μ½λλ κΉνλΈμμ νμΈν μ μμ΅λλ€ :) μλΉμ€μμ μ¬μλκ° νμν κ²½μ°λ μΈμ μΌκΉμ? λΉμ¦λμ€ λ‘μ§ μ€λ₯μ κ°μ λ΄κ° μμ±ν μ ν리μΌμ΄μ μ μν΄ λ°μν μλ¬λ μ¬μλλ₯Ό νλλΌλ λμΌνκ² μ€ν¨ν κ²½μ°κ° ν½λλ€. νμ§λ§ λ€νΈμν¬μ κ°μ μΌμμ μΌλ‘ λ°μν μ μλ μ₯μ μν©μμλ μ μ©νκ² μ¬μ©ν μ μμ΅λλ€. λνμ μΌλ‘λ λ°μ΄ν°λ² μ΄μ€ I/Oμμ νμμμ, API νΈμΆ μ λ°μνλ νμμμ λ±μ΄ μκ² λ€μ. μ΅κ·Ό μ¬λ΄μμ μΈλΆ APIλ₯Ό νΈμΆνλ κ³Όμ μμ κ°νμ μΌλ‘ μλμ κ°μ μμΈκ° λ°μνμ΅λλ€. reactor.core.Exceptions$ReactiveException: io.netty.channel.unix.Errors$NativeIoExc.. 2023. 3. 4. μ’μμ κΈ°λ₯μ ν΅ν΄ μ΄ν΄λ³΄λ λμμ± μ΄μ (synchronized) μλ νμΈμ, μ΄λ² ν¬μ€ν μμλ λμμ±(Concurrency)μ λν΄ μ΄ν΄λ³΄κ² μ΅λλ€. (μμ μ½λλ κΉνλΈμμ νμΈνμ€ μ μμ΅λλ€.) λμμ±(Concurrency) κ°λ λ€μ΄λ² μ¬μ μ κ²μν΄λ³Έ λμμ±μ λ€μκ³Ό κ°μ΅λλ€. μ΄λ€ λ μ¬κ±΄μ΄ κ°μ μκ°μ μΌμ΄λλ κ²μ μ΄λ₯΄λ λ§ λλΆλΆμ μΉ μλ²λ μ¬λ¬ κ°μ μμ²(ν΄λΌμ΄μΈνΈ)μ λμμ μνν μ μκ³ , μ΄λ μμ±ν μ½λκ° λμμ μνλ μ μλ€λ μλ―Έμ λμΌν λ§₯λ½μ λλ€. μ΄λ¬ν λμμ± λ¬Έμ λ₯Ό μ΄ν΄λ³΄κΈ° μν΄ κ²μκΈμμ ν΄λΌμ΄μΈνΈκ° λμμ μ’μμλ₯Ό νμ λ λ°μν μ μλ λ¬Έμ μ λν΄ μ΄ν΄λ³΄κ² μ΅λλ€. μ κ·Έλ¦Όμ λν μ€λͺ μ λ€μκ³Ό κ°μ΅λλ€. User Aκ° κ²μκΈ 1μ μ’μμλ₯Ό ν΄λ¦νμ λ likeCount μ‘°ν (likeCount = 0) User Bλ κ²μκΈ .. 2023. 2. 26. μ΄μ 1 2 3 4 5 6 7 Β·Β·Β· 42 λ€μ λ°μν