λ°μν Spring45 Spring μ€μΌμ₯΄λ¬ λ‘μ§μ΄ λ©ν° μλ² μ€ ν μλ²μμλ§ μ€νλλλ‘ μ€μ νκΈ° μλΉμ€λ₯Ό μ΄μνλ©΄ μ΅μν 2λ μ΄μμ λ©ν° μλ²λ₯Ό μ¬μ©νμ¬ μ΄μμ ν©λλ€. μλΉμ€μμ νΉμ μκ°μλ§ μνλλ λ°°μΉμ± λ‘μ§μ΄ μ‘΄μ¬νλ€λ©΄, λ°°μΉ μλ²λ₯Ό λ³λλ‘ λκΈ°λ νμ§λ§ νλμ νλ‘μ νΈμμ μ€μΌμ₯΄λ¬λ₯Ό μ€μ νκΈ°λ ν©λλ€. μ΄λ μ€μΌμ₯΄λ¬λ₯Ό μ μ©νλ©΄ μ€μ μ΄μ νκ²½μμ A, B μλ² λͺ¨λ μ€μΌμ₯΄μ΄ λλ©΄μ λ‘μ§μ΄ 2λ² μ€νλ μ μλλ°μ, μ΄μ κ΄λ ¨νμ¬ μ‘°κΈ μ°Ύμ보λ λλΆλΆμ ν¬μ€ν μμ ShedLock? μ μ¬μ©νμ¬ ν΄κ²°νλ λ―νλ°, Spring Profile μ μ¬μ©νλ©΄ λ κ°λ¨νκ² ν΄κ²°ν μ μμ΅λλ€. μμ κ°μ΄ μ€μΌμ€λ¬κ° μ‘΄μ¬νλ μ»΄ν¬λνΈμ @Profile μ μ€μ νκ³ , μ ν리μΌμ΄μ μ μ€νν λ νκ²½λ³μμ μ€μ νλ©΄ λ©λλ€. IntelliJ Run/Debug Configurations Application.. 2023. 12. 30. Spring @ComponentScan λμ κ³Όμ Springμμ ν΄λμ€μ @Configuration, @RestController, @Service λ±μ μ΄λ Έν μ΄μ μ μ μΈνλ©΄ μ€νλ§μ ν΄λΉ μ΄λ Έν μ΄μ λ€μ μ€μΊν΄μ λΉμΌλ‘ λ±λ‘μ ν΄μ£Όλλ°μ, μ΄λ¬ν μν μ νλ κ²μ΄ @ComponentScan μ΄λ Έν μ΄μ μ λλ€. @ComponentScan μ λ¨μ΄ κ·Έλλ‘ @Component μ΄λ Έν μ΄μ μ΄ λΆμ ν΄λμ€λ€μ μ€μΊνμ¬ μ€νλ§ λΉμΌλ‘ λ±λ‘νλλ°, μμ μΈκΈλ μ΄λ Έν μ΄μ λ€μ λͺ¨λ λ΄λΆμ @Component μ΄λ Έν μ΄μ μ κ°μ§κ³ μμ΅λλ€. μμ κ°μ μ΄λ Έν μ΄μ λ€μ μ€μ νλ©΄ μ€νλ§μμλ μ΄λ»κ² μ»΄ν¬λνΈλ€μ μ€μΊνκ³ , μ€νλ§ λΉμΌλ‘ λ±λ‘νλμ§ μ΄ν΄λ³΄κ² μ΅λλ€. @ComponentScan ComponentScan μ΄λ Έν μ΄μ μ μ‘΄μ¬νλ μ£ΌμμΌλ‘, λλ΅μ μΈ μλ―Έλ λ€μκ³Ό κ°μ΅λλ€.. 2023. 12. 9. 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. 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. Spring λΆμ° νκ²½μμ μΈμ κ΄λ¦¬νκΈ° (Redis Session Clustering) π Spring λΆμ° νκ²½μμ μΈμ κ΄λ¦¬νκΈ°(μΈμ ν΄λ¬μ€ν°λ§) μλ νμΈμ, μ΄λ² ν¬μ€ν μμλ μ¬λ¬ μλ² νκ²½μμ μΈμ μ κ΄λ¦¬νλ λ°©λ²μ λν΄ μ΄ν΄λ³΄κ² μ΅λλ€. (μ½λλ κΉνλΈμμ νμΈνμ€ μ μμ΅λλ€.) λ¨μΌ μλ²μμ μΈμ μ κ΄λ¦¬νλ€λ©΄ μλ¬΄λ° λ¬Έμ κ° μκ² μ§λ§, λ³΄ν΅ μ€μΌμΌ μμ λ±μ ν΅ν΄ λΆμ°λ μλ² νκ²½μμ μΈμ μ κ΄λ¦¬ν λ(λ‘κ·ΈμΈ μ μ μ μΈμ μ 보) μΈμ λΆμΌμΉ λ¬Έμ κ° λ°μν μ μμ΅λλ€. μμλ‘ μ΄ν΄λ³ΌκΉμ? μ¬μ©μ Aκ° localhost:8080ν¬νΈλ‘ login νΈμΆ μ μΈμ μ΄ μμ±λκ³ JSESSIONIDμ μμμ κ°μ μ€μ ν©λλ€. JSESSIONID? - μΈμ μ μ μ§νκΈ° μν΄ Tomcat Containerμμ λ°κΈνλ Keyμ΄κ³ Valueλ₯Ό ν΅ν΄ μΈμ μ μ μ§ν μ μμ΅λλ€. λμ λ°©μ? 1. λΈλΌμ°.. 2023. 2. 12. Spring DispatcherServlet(λμ€ν¨μ²μλΈλ¦Ώ) κ°λ λΆν° λμ κ³Όμ κΉμ§ π DispatcherServlet μλ νμΈμ, μ΄λ² ν¬μ€ν μμλ Springμμ HTTP μμ² λ° μλ΅κ³Ό κ΄λ ¨νμ¬ κ°μ₯ ν΅μ¬ κΈ°μ μΈ DispatcherServletμ λν΄ μ΄ν΄λ³΄κ³ μ ν©λλ€. νμμ κ°λ μ λν΄μλ μ΄λ μ λ μκ³ μμμ§λ§ μ΄λ ν κ³Όμ μ ν΅ν΄ λμ€ν¨μ² μλΈλ¦Ώμ΄ ν΄λΌμ΄μΈνΈμ μμ²μ λ°κ³ , λ©μλμ νλΌλ―Έν° μ 보λ₯Ό μ²λ¦¬νκ³ μλ΅μ λ°ννλμ§ λ΄λΆ λμμ μ λͺ°λμλλ°μ, μ΄λ² κΈ°νμ μ λ¦¬ν΄ λ³΄μμ΅λλ€. (νλ¦° λ΄μ©μ΄ μ‘΄μ¬ν μ μμΌλ λ§μν΄ μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€. π) | DispatcherServlet κ°λ νλ‘ νΈ μ»¨νΈλ‘€λ¬(Front Controller)λΌκ³ λ λΆλ¦¬λ DispatcherServletμ HTTP νλ‘ν μ½λ‘ λ€μ΄μ€λ λͺ¨λ μμ²μ λ¨Όμ λ°μμ μ ν©ν 컨νΈλ‘€λ¬μ μμ(Delega.. 2023. 2. 11. μ΄μ 1 2 3 4 5 λ€μ λ°μν