Back-End ์์ ์ค(103)
-
[Spring] @PathVariable ๊ทธ๋ฆฌ๊ณ @RequestParam
๐ ๊ฐ์ Spring์ผ๋ก Web Service๋ฅผ ๋ง๋ค๊ธฐ ์ํด Controller๋ฅผ ๋ง๋ค๊ฒ ๋๋ฉด Client์์ URI์ Parameter๋ก ์์ฒญ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ ๊ฒ์ด์์. ์ด ๋ ์๋ ๋ ๊ฐ์ง๋ฅผ ์ด์ฉํด์ ์์ฒญ์ ํ๊ฒ ๋๋๊ฒ ๋ํ์ ์ด๋๋๋ค. ์ฒซ์งธ : http//localhost?index=1&page=2 ๋์งธ : http://localhost/index/1 ์ฒซ๋ฒ์งธ์ ๊ฒฝ์ฐ Parameter์ ๊ฐ๊ณผ Key(name - ์ด๋ฆ)์ ํจ๊ป ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก Query String์ด๋ผ๊ณ ๋ ํ๋ฉฐ, ๊ฒ์ํ ๋ฑ์์ Page ๊ฒ์ ๋ฐ ๊ฒ์ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ๊ฒฝ์ฐ ๋ง์ด ์ฌ์ฉํ๋ ๊ฒ์ด์์. ๋๋ฒ์งธ ๊ฒฝ์ฐ๋ REST API์์ ๊ฐ์ ํธ์ถํ ๋, ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด๋๋๋ค. ๐ฝ @RequestParam ๊ฐ์์์ ์ฒซ๋ฒ์งธ์ ๊ฒฝ์ฐ @Reque..
2022.03.22 -
[Spring] @Controller์ @RestController์ ์ฐจ์ด
๐ ๊ฐ์ Spring์๋ Controller๋ฅผ ์ง์ ํด ์ฃผ๊ธฐ ์ํด ๋ ๊ฐ์ง Annotaion์ด ์ค๋น ๋์ด ์๋ ๊ฒ์ด์์. ์ฒซ๋ฒ์งธ๋ `@Controller`๊ฐ ์๊ณ , ๋๋ฒ์งธ๋ `@RestController`๊ฐ ์๋ ๊ฒ์ด์์. ๋ ์น๊ตฌ์ ์ฃผ์ ์ฐจ์ด์ ์ `HTTP Response Body`๊ฐ ์์ฑ๋๋ ๋ฐฉ์์ ์๋ต๋๋ค. ๐ @Controller - Spring MVC Controller ๐ฝ Controller - View ์ ํต์ ์ธ Spring MVC Controoler์ธ `@Controller`๋ ์ฃผ๋ก View ๋ณํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฒ์ด์์. ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๊ณผ์ ์ ํตํด Spring MVC Controller๋ Client์ ์์ฒญ์์ View๋ฅผ ๋ฐํํ๋ ๊ฒ์ด์์. โ Client(Front End)๋ URI ..
2022.03.22 -
[Spring] @Transactional๊ณผ rollbackFor ์์ฑ
๐ @Transactional๊ณผ rollbackFor ์์ฑ Spring์ @Transactional์ด ๋ถ์ Class์ Proxy๋ฅผ ์์ฑํ๋ ๊ฒ์ด์์. Proxy๋ ํธ๋์ญ์ ๋ก์ง์ Method ์ ๋ค์ ๋ฃ์ด ์ค๋ต๋๋ค. ์ฃผ๋ํ๋์ @Transactional์ rollbackFor ์์ฑ์ ์ด์ฉํ์ฌ Exception.class๋ฅผ ๋ฑ๋กํ ๊ฒ์ด์์. ์ด ์๋ฏธ๋ Spring์๊ฒ 'Run Time Exception์ด ํฐ์ง๋ฉด Roll Back ํด์ค!' ๋ผ๊ณ ํ๋ ๊ฒ์ด์์. ๋ง์ฝ ์ด๋ ๊ฒ @Transactional์ ์์ฑ์ ์ฃผ์ง ์์ผ๋ฉด Spring์ RuntimeException.class, Error.class๋ฅผ ์ ์ธํ๋ค๊ณ ์ดํดํ๋ ๊ฒ์ด์์. ์ฆ, Default ์์ฑ์ด ์ด๊ฒ์ด๋ผ๋ ๊ฒ์ด์ง์. ํ์ง๋ง, ์ด๋ ๊ฒ checked..
2022.03.11 -
[Spring] @RequestBody์ @ResponseBody๋?
๐ @RequestBody์ @ResponseBody๋? ์คํ๋ง์์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๊ฒฝ์ฐ @RequestBody์ @ResponseBody๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด์์. ์ฃผ๋ํ๋์ Server ๊ฐ๋ฐ๋ก๋ maven ๊ธฐ๋ฐ Spring์ผ๋ก, Client๋ Vue.js๋ฅผ ๊ณต๋ถํ๋ฉด์ ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ํด ๋ณด๊ณ ์๋ ๊ฒ์ด์์. Vue.js๋ ๋ํ์ ์ธ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๊ธฐ๋ฐ Client Java Script์ Framework๋๋๋ค! ๐ฝ Client์ Server์ ๋น๋๊ธฐ ํต์ ์ด์ผ๊ธฐ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ํต์ ํ๋ Message๋ฅผ ์์ฒญ(Request)๋ผ๊ณ ํ๊ณ , ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ํต์ ํ๋ ๋ฉ์์ง๋ฅผ ์๋ต(Response)๋ผ๊ณ ํ๋ ๊ฒ์ด์์. ์น์์ ์๋ก๊ณ ์นจ(ํ๋ฉด์ ํ) ์์ด ์ด๋ฃจ์ด์ง๋ ๋์๋ค์ ๋๋ถ๋ถ ๋น๋๊ธฐ ํต์ ์ผ๋ก ์ด๋ค์ง๋ ๊ฒ..
2022.03.11 -
[Spring] VO, DAO, DTO, Entity์ ๋ํด์
๐ VO( Value Object ) ๐ฝ ๊ฐ๋ Value Object๋ DTO์ ๋์ผํ ๊ฐ๋ ์ด๋ ์ฐจ์ด์ ์ read only ์์ฑ์ ๊ฐ๋ ๊ฒ์ด์์. Value Object๋ ๊ด๊ณ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋ ์ฝ๋์ ๋์๋๋ ์๋ฐ ํด๋์ค์ธ ๊ฒ์ด์์. ํํ๋ db ๋ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๋ ํ๋๋ค์ Value Object์ Attribute๋ก ํ๊ณ ํด๋น ๋ณ์์ ์ ๊ทผํ ์ ์๋ Getter, Setter ๋ฉ์๋์ ์กฐํฉ์ผ๋ก ํด๋์ค๊ฐ ํ์ฑ๋์ด์ง ํด๋์ค์ธ ๊ฒ์ด์์. ๐ก ์ฐธ๊ณ : JPA์ Entity์์๋ Setter ์ฌ์ฉ์ ์ง์ํ๋, VO๋ ์๋๋ค. ํน์ฑ์ ๋์ฒด๋ก ๋ถ๋ณ์ฑ์ด๊ณ equlas()๋ก ๋น๊ตํ ๋ ๊ฐ์ฒด์ ๋ชจ๋ ๊ฐ์ ๋น๊ตํด์ผ ํ๋ ๊ฒ์ด์์. ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์๊ฐ ํ๋ฉด์์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๊ฑฐ๋ ์กฐํ ์์ฒญ์ด ์์ ๋ ์ ๋ ฅ๋ ๋ฐ์ดํฐ..
2022.03.09 -
[Spring boot - Gradle] JPA ์ฐ๊ฒฐ ์ ๋ณด ์ํธํ(jasypt)
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค! ์ค๋์ ์ฐ๋ฆฌ Back End๊ฐ Coding์ ํ๋ฉด์ ๊ฐ์ฅ ๊ณ ๋ฏผ์ธ DB ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ์จ๊ธฐ๋ฉด์ ํ์๋ค๊ณผ ๊ณต์ ๋ฅผ ํ ์ ์๋๊ฐ?์ ๋ํด ๋ฐฉ๋ฒ์ ์ฐพ๊ฒ ๋์ด ๊ทธ ๋ด์ฉ์ ์์ฑ ํด๋ณด๊ณ ์ ํฉ๋๋ค. ์ฃผ๋ํ๋์ ์ฌํ๊น์ง application.properties๋ฅผ git ignore์ ๋ฑ๋กํจ์ผ๋ก์จ ๋ฏผ๊ฐ ์ ๋ณด๋ฅผ ์จ๊ฒผ๋๋ฐ, ์ด๋ ๊ฒ ๋๋ฉด ๊ฐ์ด ํ๋ก์ ํธ๋ฅผ ํ๋ ํ์์ด ์๋ค๊ณ ๊ฐ์ ํ์ ๋, ๊ทธ ํ์์ด ๋ ๋์ผํ ๋ด์ฉ์ application.properties๋ yml์ ๋ง๋ค์ด์ค์ผ ํ๋ค๋ ๋จ์ ์ด ์๋ ๊ฒ์ด์์. ํญ์ ์ด ๋ถ๋ถ์ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์๊น?๋ฅผ ๊ณ ๋ฏผํ์๋๋ฐ, ๊ทธ ๋ฐฉ๋ฒ์ ์ฐพ์๋ต๋๋ค! ํด๋น ํ๋ก์ ํธ์ ๋ํ Source Code๋ '์ฃผ๋ํ๋ Git Hub'์์ ํ์ธํ์ค ์ ์์ต๋๋ค. ๊ทธ๋ผ ๋ฐ..
2021.12.31