์ ์ฒด ๊ธ199 [์๋ฌ] For queries with named parameters you need to use provide names for method parameters ๋ฌธ์ ์ํฉ Like column์ enum ํ์ column์์ ํด๋น ์๋ฌ ๋ฐ์ ๋ฐ์ ์์ธ ํด๋น ์๋ฌ๋@Param() ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ๋ช ์์ ์ผ๋ก name ์ง์ ์ ํด์ฃผ์ง ์์ ๋ฐ์ํ๋ ๋ฌธ์ ์ด๋ค. (ํ๋ผ๋ฏธํฐ๊ฐ ์๋ update, delete ๋ฑ์ query์ ๊ฒฝ์ฐ, ๋ฉ์๋์ ๋งค๊ฐ๋ณ์์ ๋ํ name์ ์ ๊ณตํด์ฃผ์ด์ผ ํ๋ค.) ํ์ง๋ง ๋์ ๊ฒฝ์ฐ์๋ ์ด๋ฏธ ํด๋น ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํด ๋ช ์ํด์ค ์ํ์๋๋ฐ๋ ์๊พธ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ Java 8๋ฒ์ ์ดํ๋ถํฐ๋ "Preferences(Command + ,) > Build, Execution, Deployment > Compiler > Java Compiler" ์์ Additional command line parameters ๋ถ๋ถ์ -parameters ๋ฅผ .. 2023. 10. 5. [์๋ฌ] MySQL Data truncated for column ๋ฌธ์ ์ํฉ Like column์ enum ํ์ column์์ ํด๋น ์๋ฌ ๋ฐ์ ๋ฐ์ ์์ธ ํด๋น ์๋ฌ๋ db์ ์๋ column๊ณผ ์๋ฃํ์ด ์ผ์นํ์ง ์์์ ๋ฐ์ํ๋ ๋ฌธ์ ์ด๋ค ํ์ง๋ง ๋์ ๊ฒฝ์ฐ์๋ db์ ์ฝ๋ ๋ชจ๋ enum์ผ๋ก ์ ์ค์ ์ด ๋์ด ์์๋ค public class UserLikes { ... @Enumerated(EnumType.STRING) // Enum ํ์ ์ผ๋ก ์ ์ฅ๋๋๋ก ์ค์ @Column(nullable = false) private LikeEnum likeType; // Enum ํ์ ์ผ๋ก ๋ณ๊ฒฝ ... } LikeEnum์ ๊ฐ์ด ๋ฌ๋ผ์ ์๊ธฐ๋ ๋ฌธ์ ์๋ค. ๊ธฐ๋ฅ ์ถ๊ฐ๋ฅผ ์ํด Enum์ company๋ฅผ ๋จผ์ ์ถ๊ฐํด์ ์ฌ๋ ธ๋๋ฐ, DB์ enum์๋ company๊ฐ ๋ค์ด๊ฐ ์๊ณ ๋ด ๋ก์ปฌ enumty.. 2023. 10. 4. [Github Actions] PR open ์ ๋ผ๋ฒจ ์ถ๊ฐํ๊ณ closed ์ ์ญ์ ํ๊ธฐ ํ์ฌ ์ํฉ PR ๋ฆฌ๋ทฐ ๊ด๋ จ ๋ผ๋ฒจ์ ๋ง๋ค์ด์ ๋ฆฌ๋ทฐ ์ํฉ ๋ฐ ๋ฐ์ ์ํฉ์ ํธ๋ํนํ๊ณ ์์๋ค ํ๋ฆ์ ๋๋ต ์๋์ ๊ฐ๋ค 1. PR open : ๋ฆฌ๋ทฐ ํ์ ๋ผ๋ฒจ ์ถ๊ฐ - ๋ฆฌ๋ทฐ์ค : ๋ฆฌ๋ทฐ์ด๊ฐ ๋ฆฌ๋ทฐ ์ค์ธ ๊ฒฝ์ฐ - ๋ต๋ณ ํ์ : ๋ฆฌ๋ทฐ ๊ณผ์ ์ค์ ์ง๋ฌธ์ด ์๊ฒจ PR ๋ด๋น์์ ๋ต๋ณ์ด ํ์ํ ๊ฒฝ์ฐ - ์์ ์์ฒญ : request changes์ธ ๊ฒฝ์ฐ - ์์ ๋ฐ์ ์ค : ์์ฒญ๋ ์์ ์ฌํญ์ ๋ฐ์ํ๊ณ ์๋ ๊ฒฝ์ฐ - ๋จธ์ง ๊ฐ๋ฅ : ๋ฆฌ๋ทฐ์ด๊ฐ ๋ฆฌ๋ทฐ ์๋ฃํ๊ณ ๋ฌธ์ ์๋ ๊ฒฝ์ฐ 2. PR close : ๋จธ์ง ๊ฐ๋ฅ ๋ผ๋ฒจ ์ญ์ ํ์ง๋ง ๋งค๋ฒ PR์ ์ฌ๋ฆด ๋๋ง๋ค ๋ผ๋ฒจ์ ์ถ๊ฐํ๋ ๊ฒ๋ ๊ท์ฐฎ์๋ค ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ซ์๋ ๊ฒ์ PR์ ๋จธ์งํ ์ดํ์ ๋จ๋ ์งํ๊ณผ์ ๋ผ๋ฒจ๋ค์ด์๋ค!! ์ง๊ธ๊น์ง๋ ์๋์ผ๋ก ๋จธ์ง ์ ํด๋น ๋ผ๋ฒจ์ ์ ๊ฑฐํ๊ณ ์์์ง๋ง PR ๊ฐ์๊ฐ ๋์ด๋จ.. 2023. 8. 15. [์ค๊ณ] Image ์ ์ก๊ณผ ๋ฐ์ดํฐ ์ ์ก API ๋ถ๋ฆฌ ํ์ฌ ์ํฉ ๋ณธ ํ๋ก์ ํธ๋ ๋ฐ์ดํฐ JSON๊ณผ ์ด๋ฏธ์ง(form-data)๋ฅผ ํ๋์ API๋ฅผ ํตํด ์ ์กํฉ๋๋ค. ๋ฌธ์ ์ ๋ณดํต ์ด๋ฏธ์ง์ JSON๋ฐ์ดํฐ๋ฅผ ํจ๊ป ๋ณด๋ด์ง ์์ต๋๋ค. API๋ฅผ ์ ์กํ ๋๋ ๋ณดํต content/type์ application/json์ผ๋ก ์ ์กํ๋๋ฐ ์ด๊ฒ์ multipart/formdata ๋ฐฉ์์ด ์๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ ์ด์ ๋ฐ๋ผ, ๋ฐฉ๋ฒ์ 2๊ฐ์ง ์ธ๋ฐ ๋ถ๋ฆฌํด์ ์์ฒญํ๊ธฐ ์๋ฒ๋ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ณ , ์ ์ฅ๋ ์ด๋ฏธ์ง์ id(๋๋ ํ์ผ๋ช )๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ์กํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ์ด๋ฏธ์ง์ id์ ์ ์กํ ๋ฐ์ดํฐ๋ฅผ application/json์ผ๋ก ์ ์กํฉ๋๋ค. base64 ์ธ์ฝ๋ฉ ์ด๋ฏธ์ง๋ฅผ base64๋ก ์ธ์ฝ๋ฉํด์ application/json์ผ๋ก ์ ์กํ ๋ฐ์ดํฐ์ base64๋ก ์ธ์ฝ๋ฉ๋ ์ด๋ฏธ์ง๋ฅผ ํจ๊ป.. 2023. 8. 13. [์ค๋ฅ] multipart์์ PUT์ด ๋จนํ์ง ์๋ ์ค๋ฅ ๋ฌธ์ ์ํฉ PUT ๋ฐฉ์์ผ๋ก multipart๋ฅผ ๋ณด๋๋๋ฐ, ๊ธฐ๋ฅ ์์ฒด๋ ์ ๋์๊ฐ์ผ๋ ํ ์คํธํ ๋ ์๊พธ ์ค๋ฅ๊ฐ ์๊น ๋ฐ์ ์์ธ ๊ธฐ๋ณธ์ ์ผ๋ก multipart ์์ฒญ์ GET/POST๋ง ์ง์ํ๋ค ํด๊ฒฐ ๋ฐฉ๋ฒ POST๋ก ์์ ํ์๋๋ ๋์๊ฐ๋ค! ๋ฆฌํฉํ ๋ง ์ ์ด์ API ์ค๊ณ ์์น์๋ ์กฐ๊ธ ์ด๊ธ๋ ๊ฒ ๊ฐ์์ ๊ฒธ์ฌ๊ฒธ์ฌ ์์ ํ๋ค PUT์ ํน์ ๋ฆฌ์์ค๋ฅผ ๊ฐฑ์ ํ๋ ์ญํ ์ ํ๋๋ฐ multipart๋ก ๋ณด๋ด๋ฉด ํ๋ฒ์ ์ฌ๋ฌ ๋ฆฌ์์ค๋ฅผ ์ฒ๋ฆฌํ๋ฏ๋ก ์ด๋ฏธ์ง ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ PUT์ผ๋ก ์ฒ๋ฆฌํ๋ ค๋ฉด ์ด๋ฏธ์ง๋ฑ์ ๋ํ ๋ฆฌ์์ค URI์ ๋ณ๋์ PUT ์์ฒญ์ ๋ณด๋ด์ ๊ฐฑ์ ํ๊ณ ์ผ๋ฐ์ ์ธ ํผ์ ๋ฐ๋ก ์ฒ๋ฆฌํด์ผ ํ๋ค. ๋ผ๊พธ๋ผ๊พธ profileUpdate์์ ํ URI๋ก PUT์ ๋ณด๋ด์ ์ฌ๋ฌ ๋ฆฌ์์ค(ํ์ ์ ๋ณด + ์ด๋ฏธ์ง)๋ฅผ ํ๊บผ๋ฒ์ ์ฒ๋ฆฌํ๋ ค๊ณ ํ์ผ๋ฏ๋ก PUT์ด ์ ํฉ์น .. 2023. 8. 13. [์ถ์ธก] ๊ธฐ์กด Spring Security๋ฅผ ์ ์ฉํ ์ํฉ์์ OAuth2 ์ ์ฉ์ด ์ ๋จนํ๋ ์ด์ ์ถ์ธก ๋ฌธ์ ์ํฉ ์์ฒด ํ์๊ฐ์ ์์ jwt refresh & access token์ ์ง์ ๋ง๋ค์ด์ ์ ์ฉํ ์ํฉ ์ด ์ํฉ์์ oAuth2 ์ ์ฉ ์๋ํ์์ผ๋ ์คํจ ์์ ์๋ง ๋ฉํ ๋๊ป์ ์๋ ค์ฃผ์ ๊ฑด๋ฐ ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ ๋น์ทํ ์ํฉ์ธ ๊ฒ ๊ฐ์ ๊ณต์ ํฉ๋๋ค ์ ์์ ์ธ ๋ฐฉ๋ฒ) jwk/jws๋ jwt์ ํจ๊ป ์ ํ ํฐ ํ์ทจํ๋ฉด ๋ง์๋๋ก ์ธ ์ ์๊ธฐ ๋๋ฌธ์ signature ๋ฃ์ด์ ์ํธํ ํ ๋น๋์นญ์ผ๋ก ๊ฒ์ฆํจ (์ง์ง ์๋ฒ์์ ๋ณด๋ธ ๊ฒ์ธ์ง ํ์ธ) ์์ ๋ก๊ทธ์ธ์ด๋ ๊ฐ์ด ์ธ ๋์ ๋ฌธ์ ์ ์ผ๋ฐ ๋ก๊ทธ์ธ ์ spring์์ ์ฐ๋ token์ด๋ ์์ ๋ก๊ทธ์ธ ์ ๋์ค๋ token์ด ๋ถ๋ฆฌ๋์ด ์์ ๊ทธ๋ฌ๋ spring ์์ฒด์์ ์ด 2๊ฐ๋ฅผ ํ๋์ token์ผ๋ก ํฉ์ณ์ clientํํ ๋ณด๋ด์ค(๋์ด ์๋ก ๋ค๋ฅธ ์ ์ ๋ก ์กํ๋ ๊ฒ์ ๋ง๊ธฐ ์ํจ) ⇒ โจ๊ทผ๋ฐ ๋ด.. 2023. 8. 13. [์ค๋ฅ] WebMvcTest์์ body๊ฐ์ด empty์ธ ๊ฒฝ์ฐ ๋ฌธ์ ์ํฉ ProfileUpdateController์์ status๋ ํ์ธ๋๋๋ฐ body์์ ์๊พธ null๊ฐ์ด ๋ฐ์ํ๋ ์ค๋ฅ ๋ฐ์ String์ ๋ฐํ๊ฐ์ผ๋ก ํ๋ฉด ์ ๋๋๋ฐ dto์ body์์๋ง ๋ฌธ์ ๊ฐ ์๊ฒจ์ ๊ฐ์ด ์ฌ๋ฌ๋ชจ๋ก ๊ณ ๋ฏผํ๋ค. Multipart๋ฅผ ์ธ์๋ก ๋ฐ๋ ๊ฒ์ด๋ผ multipart์ ๋ฌธ์ ์ธ ์ค ์์์ผ๋.... ๋ฐ์ ์์ธ ProfileUpdateController๋ก ์ ๋ฌ๋ JSON์ด ๋ง๋ค์ด๋ธ Response ๊ฐ์ฒด๊ฐ ์ฐ๋ฆฌ๊ฐ ์์ํ ๊ฒ๊ณผ ๋ค๋ฅธ ๊ฐ์ฒด๋ผ ๋ฐ์ํ๋ ๋ฌธ์ ์๋ค (Multipart๋ 1๋ ์๊ด์์๋ค^^) https://velog.io/@devmizz/Spring-WebMvcTest%EC%97%90%EC%84%9C-Response-Body%EA%B0%80-Empty%EC%9D%BC-%EB%95%8C 2023. 8. 13. [์ค๊ณ] File ํ ์ด๋ธ ๋ด์ item_id ์นผ๋ผ ๋ฆฌํฉํ ๋ง ํ์ฌ ์ํฉ ํ์ฌ File ํ ์ด๋ธ์ User, Portfolio, Item 3๊ฐ์ ํ ์ด๋ธ์ด ์ฐธ์กฐํ๊ณ ์์ต๋๋ค. User์ Portfolio๋ File๊ณผ 1๋1 ๊ด๊ณ์ด๊ธฐ ๋๋ฌธ์ fk๋ฅผ ๊ฐ์์ ํ ์ด๋ธ์ ๋์ง๋ง, Item์ ๊ฒฝ์ฐ 1๋๋ค ๊ด๊ณ์ด๊ธฐ ๋๋ฌธ์ fk๋ฅผ File ํ ์ด๋ธ์์ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ์ ๋ฌธ์ ์ ์ ํ ์ด๋ธ์ ์ ํฉ์ฑ์ ํด์น๊ณ , item_id๊ฐ์ ๊ฐ์ง์ง ์๋ User ์ Portfolio ํ ์ด๋ธ์์๋ item_id ์นผ๋ผ ๊ฐ์ ๋ถํ์ํ๊ฒ ๊ฐ์ ธ null ๊ฐ์ด ๋ฐ์ํ๋ค๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํด๊ฒฐ๋ฐฉ์ ์ด์ ๊ฒฝ์ฐ 2๊ฐ์ง์ ํด๊ฒฐ๋ฐฉ๋ฒ์ ๋ ์ฌ๋ฆด ์ ์์ต๋๋ค. ItemFile ํ ์ด๋ธ์ ๋ฐ๋ก ๋ง๋ค์ด์ ๊ธฐ์กด ํ์ผ๊ณผ ์ด๋ฅผ ๊ตฌ๋ถํ๋ค. File ํ ์ด๋ธ์์ Item_Id๊ฐ ์๋ OwnerId ๊ฐ์ ๋์ด ์ด ๊ณณ์ item_id, .. 2023. 8. 13. [์ง์] yml ํ๊ฒฝ๋ณ์ env์ ๋ฑ๋กํ๊ธฐ ์ง๊ธ๊น์ง ๋งจ๋ commitํ ๋๋ง๋ค ๋ก์ปฌ์์ yml ๋ณต์ฌํ๊ณ ์ง์ฐ๊ณ commit ํ ๋ค์ ๋ถ์ฌ๋ฃ๊ธฐํ๊ณ ์์๋๋ฐ ํ์์ด ์ข์ ๋ฐฉ๋ฒ์ ์๋ ค์ค์ ์คํํด๋ณด๋ ค๊ณ ํ๋ค! ๋ฐ๋ก env ํ์ผ์ yml์ ํ๊ฒฝ๋ณ์ ๊ฐ์ ๋ฑ๋กํด๋๋ ๋ฒ์ด๋ค. ๋ก์ปฌ resource/properties/env.properties ์์ฑ ํ ์๋ ๊ตฌ์กฐ๋ก ์ค์ ํ์ผ ์์ propertyConfig ํ์ผ ์์ฑ package swmaestro.spaceodyssey.weddingmate.global.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.spr.. 2023. 8. 13. ์ด์ 1 2 3 4 ยทยทยท 23 ๋ค์