λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
λ°˜μ‘ν˜•

Spring Boot10

μŠ€ν”„λ§μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈλ‘œ 데이터 전달 μ‹œ ν•œκΈ€μ΄ κΉ¨μ§€λŠ” 이슈 (ISO-8859-1) μ•ˆλ…•ν•˜μ„Έμš”, 졜근 ν΄λΌμ΄μ–ΈνŠΈ(Vue) 와 μ„œλ²„(Spring Boot) 연동 μ‹œ μ„œλ²„μ—μ„œ ν•œκΈ€ 데이터λ₯Ό μ „λ‹¬ν•˜λ©΄ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ ν•œκΈ€μ΄ κΉ¨μ§€λŠ” μ΄μŠˆκ°€ λ°œμƒν–ˆμ—ˆλŠ”λ°μš”, 이와 κ΄€λ ¨ν•˜μ—¬ κ°„λž΅νžˆ 정리해 λ³΄μ•˜μŠ΅λ‹ˆλ‹€. 원인 HttpMessageConverter μΈν„°νŽ˜μ΄μŠ€λŠ” Springμ—μ„œ HTTP request, response λ₯Ό λ³€ν™˜ν•΄ μ£ΌλŠ” μΈν„°νŽ˜μ΄μŠ€μΈλ°μš”, ν•΄λ‹Ή ν¬μŠ€νŒ…μ„ μ΄ν•΄ν•˜λŠ”λ° ν•„μš”ν•œ λ‚΄μš©μ΄λΌ κ°„λž΅ν•˜κ²Œλ§Œ μ„€λͺ…ν•˜κ³  λ„˜μ–΄κ°€κ² μŠ΅λ‹ˆλ‹€. μŠ€ν”„λ§μ—μ„œ ν”νžˆ μ‚¬μš©ν•˜λŠ” @RestController μ–΄λ…Έν…Œμ΄μ…˜μ— ν¬ν•¨λ˜μ–΄ μžˆλŠ” @ResponseBody μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•  경우, HttpMessageConverter 이 λ™μž‘ν•˜κ³  λ°˜ν™˜ νƒ€μž…μ— 따라 μ μ ˆν•œ κ΅¬ν˜„μ²΄κ°€ μ‚¬μš©μ΄ λ©λ‹ˆλ‹€. λŒ€ν‘œμ μœΌλ‘œλŠ” ByteArrayHttpMessageC.. 2023. 11. 20.
SpringBoot Multi DataSource - JPA πŸ”— SpringBootμ—μ„œ λ©€ν‹° λ°μ΄ν„°μ†ŒμŠ€ μ„€μ •ν•˜κΈ° - JPA ν•˜λ‚˜μ˜ ν”„λ‘œμ νŠΈμ—μ„œ μ—¬λŸ¬ 개의 λ‹€λ₯Έ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” κ²½μš°κ°€ μžˆλŠ”λ°μš”, 이런 경우 DataSourceλ₯Ό μ»€μŠ€ν…€μœΌλ‘œ μ„€μ •ν•˜μ—¬ 관리할 수 μžˆμŠ΅λ‹ˆλ‹€. κ°„λ‹¨ν•œ 섀정을 톡해 ν•œ ν”„λ‘œμ νŠΈμ—μ„œ λ‹€λ₯Έ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” 방법을 μ •λ¦¬ν•©λ‹ˆλ‹€. 예제 μ½”λ“œλŠ” GitHubμ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 🎈 application.yml yml νŒŒμΌμ— 두 개의 λ°μ΄ν„°λ² μ΄μŠ€(datasource, datasource-second)λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. (κΈ°λ³Έ μŠ€ν”„λ§ λΆ€νŠΈμ˜ λ°μ΄ν„°λ² μ΄μŠ€ μ„€μ •κ³Ό 달리 λ©€ν‹° 데이터 μ†ŒμŠ€ HikariConfigμ—μ„œλŠ” url이 μ•„λ‹Œ jdbc-url으둜 넀이밍을 ν•΄μ•Όν•©λ‹ˆλ‹€.) 🎈 DataSource Configuration μ•„λž˜ μ½”λ“œμ—μ„œ μ‚¬μš©ν•  패.. 2023. 1. 21.
Spring Boot profiles μ„€μ •ν•˜κΈ° πŸ“Ž Spring Boot profiles μ„€μ •ν•˜κΈ° μ•ˆλ…•ν•˜μ„Έμš”, 이번 ν¬μŠ€νŒ…μ—μ„œλŠ” μŠ€ν”„λ§ λΆ€νŠΈμ—μ„œ μ—¬λŸ¬ profile을 μ„€μ •ν•˜κ³ , μ„€μ • 값듀을 객체에 λ°”μΈλ”©ν•˜λŠ” 방법에 λŒ€ν•΄ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. μ‹€μ œ κ°œλ°œμ„ μ§„ν–‰ν•˜κ³  μš΄μ˜μ„ ν•˜λ‹€λ³΄λ©΄ 개발(dev), ν…ŒμŠ€νŠΈ(stage), μ•ŒνŒŒ(alpha), μƒμš©(prod) λ“± μš΄μ˜ν™˜κ²½μ— 따라 μ„œλ²„λ‚˜ μ„€μ • 값듀이 μ—¬λŸ¬κ°œλ‘œ λ‚˜λ‰  수 μžˆλŠ”λ°μš”, μŠ€ν”„λ§ λΆ€νŠΈμ—μ„œλŠ” μ΄λŸ¬ν•œ 섀정을 κ°„λ‹¨νžˆ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή ν¬μŠ€νŒ…μ—μ„œλŠ” yml νŒŒμΌμ„ κΈ°μ€€μœΌλ‘œ 섀정을 ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 🀯 πŸ“Ž yml 파일 μž‘μ„±ν•˜κΈ° resource ν•˜μœ„ 폴더에 μž‘μ„±ν•  yml νŒŒμΌμ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. πŸ“ application.yml spring: profiles: active: - local group: local: - site.. 2022. 9. 5.
Spring Boot SQL μ„€μ •(hibernate, logging) πŸ“Ž Spring Boot SQL μ„€μ •(hibernate, logging) μ•ˆλ…•ν•˜μ„Έμš”, Spring Boot의 hibernate SQL 섀정에 λŒ€ν•΄ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. μ‹€μ œ μš΄μ˜μ„ ν•˜λ‹€λ³΄λ©΄ μˆ˜ν–‰λœ 쿼리문에 λŒ€ν•΄ νŒŒμ•…ν•˜κ³ , DBμ—μ„œ 결과값을 ν™•μΈν•˜κ³  μ‹Άμ„λ•Œκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ, 둜그 νŒŒμΌμ— 쿼리문이 μ €μž₯이 λ˜μ–΄μžˆλ‹€λ©΄, ν•΄λ‹Ή 쿼리문을 λ³΅λΆ™ν•˜μ—¬ κ°„λ‹¨νžˆ 결과값을 확인할 수 μžˆλŠ” μž₯점이 μ‘΄μž¬ν•©λ‹ˆλ‹€. λ¬Όλ‘  λͺ¨λ“  쿼리문에 λŒ€ν•΄ 둜그 νŒŒμΌμ— μ €μž₯ν•œλ‹€λ©΄ μš©λŸ‰ λ“±μ˜ μ΄μŠˆκ°€ μžˆμ„μˆ˜λ„ 있겠죠? 특히 λ³΅μž‘ν•˜κ²Œ μˆ˜ν–‰λ˜λŠ” 쿼리문이 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œμ— μ‘΄μž¬ν•  λ•Œ, 이λ₯Ό ν•˜λ‚˜μ”© λΆ„μ„ν•˜μ—¬ DBμ—μ„œ 쿼리λ₯Ό μˆ˜ν–‰ν•˜μ—¬ 결과값을 ν™•μΈν•˜κΈ°μ—λŠ” κ½€λ‚˜ 번거둜운 μž‘μ—…μ΄ 될 수 μžˆλŠ”λ°μš” μ΄λŸ΄λ•Œ ꡉμž₯히 νŽΈν•˜κ²Œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. StringBuilder sb.. 2022. 3. 12.
[Spring Data MongoDB] Auto-Increment Sequence λ§Œλ“€κΈ° πŸ“Ž Spring Data MongoDB Auto-Increment Sequence λ§Œλ“€κΈ° μ•ˆλ…•ν•˜μ„Έμš”, 이번 μ‹œκ°„μ— 정리할 λ‚΄μš©μ€ Spring Data MongoDBμ—μ„œ 데이터λ₯Ό μ‚½μž…ν•  λ•Œ λ§ˆλ‹€ μžλ™μœΌλ‘œ μ¦κ°€ν•˜λŠ” ν•„λ“œλ₯Ό 생성해보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή κΈ°λŠ₯은 MySQLμ—μ„œμ˜ AUTO INCREMENT와 λ™μΌν•˜λ‹€κ³  λ³΄μ‹œλ©΄ λ©λ‹ˆλ‹€. β€» Spring Data MongoDB의 경우 처음 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— ν‹€λ¦° λ‚΄μš©μ΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. Sequence Collection 생성 package com.juhyun.shorturl.entity.sequence; import lombok.Getter; import lombok.Setter; import org.springframework.data.annotation.Id; .. 2021. 9. 10.
Spring Boot + MockMvc ν…ŒμŠ€νŠΈ(feat. Kotlin) πŸ“Ž Spring Boot + MockMvc ν…ŒμŠ€νŠΈ μ•ˆλ…•ν•˜μ„Έμš”, 이번 μ‹œκ°„μ— 정리할 λ‚΄μš©μ€ μŠ€ν”„λ§ λΆ€νŠΈμ™€ MockMvcλ₯Ό ν†΅ν•œ GET, POST λ“±μ˜ APIλ₯Ό ν…ŒμŠ€νŠΈν•˜λŠ” 법에 λŒ€ν•΄ 정리해보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€. 전체 μ½”λ“œλŠ” κΉƒν—ˆλΈŒμ—μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€ :) β€» ν¬μŠ€νŒ…μ— ν‹€λ¦° λ‚΄μš©μ΄ μ‘΄μž¬ν•˜λ©΄ 지적 λΆ€νƒλ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€! β˜… MockMvcλž€? MockMvcλŠ” Spring MVC의 ν…ŒμŠ€νŠΈ ν”„λ ˆμž„μ›Œν¬λ‘œ, κ°€μ§œ 객체λ₯Ό λ§Œλ“€μ–΄ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ„œλ²„μ— λ°°ν¬ν•˜μ§€ μ•Šκ³ λ„ Spring MVC의 λ™μž‘μ„ μž¬ν˜„ν•  수 μžˆλŠ” ν΄λž˜μŠ€μž…λ‹ˆλ‹€. 이λ₯Ό 톡해 κ°€μ§œμ˜ HTTP μš”μ²­μ„ μ»¨νŠΈλ‘€λŸ¬μ— 보내고 μ„œλ²„ λ‚΄μ—μ„œ 컨트둀러λ₯Ό μ‹€ν–‰ν•˜μ§€ μ•Šκ³  컨트둀러의 λ™μž‘μ„ ν…ŒμŠ€νŠΈν•  수 μžˆμŠ΅λ‹ˆλ‹€. MockMvcλ₯Ό μ‚¬μš©ν•¨μœΌλ‘œμ„œ μ‹€μ œ μ„œλ²„ ν™˜κ²½κ³Ό λ™μΌν•œ @SpringBoot.. 2021. 9. 7.
Spring Boot(2.5x) Hibernate, data.sql μ‹€ν–‰ μ‹œ 였λ₯˜(h2 database) 개발 ν™˜κ²½: SpringBoot(2.5x), Spring Data JPA, h2 μœ„μ™€ 같은 개발 ν™˜κ²½μ—μ„œ data.sql νŒŒμΌμ„ μž‘μ„±ν•œ λ’€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜λ©΄ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. 각각의 μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. User package com.juhyun.jwtexample.entity; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import javax.persistence.Column; import javax.per.. 2021. 7. 27.
[Docker] Spring Boot + Docker + AWS EC2 λ°°ν¬ν•˜κΈ°(MacOS M1) πŸ“Ž Spring Boot + Docker + AWS EC2 λ°°ν¬ν•˜κΈ°(Mac M1) μ•ˆλ…•ν•˜μ„Έμš”, 이번 μ‹œκ°„μ—λŠ” μŠ€ν”„λ§ λΆ€νŠΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ AWS EC2에 도컀λ₯Ό 톡해 배포해보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€. β€» ν‹€λ¦° λ‚΄μš©μ΄ μ‘΄μž¬ν•  수 μžˆμœΌλ‹ˆ μ°Έκ³ ν•΄μ„œ λ΄μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€ :) μž‘μ„±ν•œ μ½”λ“œλŠ” κΉƒν—ˆλΈŒ μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€ :) μ €μ˜ ν™˜κ²½ 섀정은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. Mac OS(M1), μΈν…”λ¦¬μ œμ΄, Spring Boot, Java 8, Gradle λ˜ν•œ μ΄λ²ˆμ— M1μ—μ„œ 배포λ₯Ό ν•  λ•Œ, κΈ°μ‘΄ λΈ”λ‘œκ·Έ λ‚΄μš©λŒ€λ‘œ μž‘μ—…μ„ ν•˜λ˜ 도쀑 μ—λŸ¬κ°€ λ°œμƒν–ˆκ³  μ•½κ°„μ˜ μ‚½μ§ˆμ΄ μžˆμ—ˆλŠ”λ°μš” .. 😭 κ°„λž΅νžˆ 정리해보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€. λŒ€λž΅μ μΈ 과정은 μœ„μ™€ κ°™μŠ΅λ‹ˆλ‹€. Dockerfile 을 build ν•΄μ„œ docker image νŒŒμΌμ„ μƒμ„±ν•©λ‹ˆλ‹€. doc.. 2021. 7. 19.
Spring Boot Maven profile 운영 & 개발 DB 뢄리(AWS EC2) πŸ“Ž Spring Boot(Maven) profile 운영 & 개발 DB 뢄리 (ν‹€λ¦° λ‚΄μš©μ΄ μžˆμ„μˆ˜λ„ μžˆμœΌλ‹ˆ λΉ„νŒμ μœΌλ‘œ λ΄μ£Όμ‹œλ©΄ 될 것 κ°™μŠ΅λ‹ˆλ‹€..! πŸ˜‚) μ•ˆλ…•ν•˜μ„Έμš”! μ΄λ²ˆμ— 정리할 λ‚΄μš©μ€ μŠ€ν”„λ§ λΆ€νŠΈμ—μ„œ 운영 & 개발 뢄리 및 AWS EC2에 배포 μž…λ‹ˆλ‹€. μ‹€λ¬΄μ—μ„œλŠ” μ‹€μ œ μ„œλΉ„μŠ€λ˜λŠ” DB와 κ°œλ°œμ€‘μΈ DB의 μ •λ³΄λŠ” λ‹€λ₯΄κ²Œ 관리λ₯Ό ν•˜λŠ”λ° 이λ₯Ό μœ„ν•΄ μŠ€ν”„λ§ λΆ€νŠΈμ—μ„œ profile을 톡해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 배포할 λ•Œ 운영과 κ°œλ°œμ„ λΆ„λ¦¬ν•΄μ„œ 배포할 수 μžˆλ„λ‘ μ§„ν–‰ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. λ˜ν•œ μ €λŠ” ν˜„μž¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ AWS EC2 ν™˜κ²½μ—μ„œ 운영, 배포λ₯Ό μ§„ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ‘œμ»¬μ—μ„œ 개발 ν›„ 배포λ₯Ό ν•˜κΈ° μœ„ν•΄ GitHub에 μ½”λ“œλ₯Ό pushν•œ λ’€ AWSμ—μ„œ pull을 ν•˜κ³  배포λ₯Ό μ§„ν–‰ν•˜κ²Œ λ˜λŠ”λ°μš”, μ΄λŸ¬ν•œ κ³Όμ •μ—μ„œ λ―Όκ°ν•œ 정보듀(.. 2021. 6. 18.
GitHub Action을 ν†΅ν•œ CI κ΅¬μΆ•ν•˜κΈ° (SpringBoot + Maven) • μ•ˆλ…•ν•˜μ„Έμš”~ 이전에 μš΄μ˜ν•˜λ˜ λΈ”λ‘œκ·Έ 및 GitHub, 곡뢀 λ‚΄μš©μ„ μ •λ¦¬ν•˜λŠ” Study-GitHub κ°€ μžˆμŠ΅λ‹ˆλ‹€! • 넀이버 λΈ”λ‘œκ·Έ • GitHub • Study-GitHub • πŸ” πŸ“Ž GitHub Action을 ν†΅ν•œ Build μžλ™ν™” (SpringBoot + Maven) μ•ˆλ…•ν•˜μ„Έμš”! μ΄λ²ˆμ— 정리할 λ‚΄μš©μ€ GitHub Action을 톡해 ν”„λ‘œμ νŠΈλ₯Ό μžλ™μœΌλ‘œ Build ν•˜λ„λ‘ μ„€μ •ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. ν˜„μž¬ AWS EC2에 Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‹€ν–‰λ˜κ³  μžˆλŠ”λ°μš”, λ°°ν¬ν•˜κΈ°κΉŒμ§€μ˜ 과정은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. λ‘œμ»¬μ—μ„œ μ½”λ“œ μˆ˜μ • -> Commit -> GitHub PR -> Merge AWSμ—μ„œ μˆ˜μ •λœ μ½”λ“œ pull -> 싀행쀑인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ •μ§€(kill) -> 메이븐 λΉŒλ“œ -> μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰ μ‹œκ°„μ΄.. 2021. 5. 14.
λ°˜μ‘ν˜•