๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŒพBackEnd17

[ Object Mapper] Dozer์— ๋Œ€ํ•ด์„œ ๋“ค์–ด๋Š” ๋ดค๋‹ˆ? Dozer dozermapper.github.io Dozer๋ž€ ๋ฌด์—‡์ธ๊ฐ€? Dozer๋Š” Java ๊ธฐ๋ฐ˜์˜ ๊ฐ์ฒด ๋งคํ•‘ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด ๋งคํ•‘์€ ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ๋งคํ•‘ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฝ์€ ๋ฐ์ดํ„ฐ๋ฅผ Java ๊ฐ์ฒด์— ๋งคํ•‘ํ•˜๊ฑฐ๋‚˜, ์„œ๋กœ ๋‹ค๋ฅธ API์—์„œ ๋ฐ˜ํ™˜ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ๋งคํ•‘ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์€ ์ผ๋‹จ ์˜์กด์„ฑ ์ถ”๊ฐ€ํ•˜์ž implementation'com.github.dozermapper:dozer-core:6.4.0' Dozer๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ด์ „์— ์ฝ”๋“œ๋ฅผ ํ•œ๋ฒˆ ์‚ดํŽด๋ณด์ž ๊ธฐ์กด์˜ ์ฝ”๋“œ๋Š” Builder๋ฅผ ์ด์šฉํ•˜์—ฌ ๋งคํ•‘์„ ํ•˜๊ฒŒ ๋„์™€์ค€๋‹ค. ์ด ๋ฐฉ์‹์€ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•œ ๋ฐฉ์‹๋ณด๋‹ค ์ •ํ™•ํ•˜๊ฒŒ ๋งคํ•‘์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค. ํ•˜.. 2023. 3. 14.
[ RFC ] ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ†ตํ•˜์—ฌ Delete์˜ Status๋ฅผ ์•Œ์•„๋ณด์ž ๊ธ€์„ ์ž‘์„ฑํ•œ ์ด์œ  status์ฝ”๋“œ๋ฅผ ํ•™์Šตํ•˜๊ณ  ์„ฑ๊ณตํ•˜๋ฉด ๋ฌด์กฐ๊ฑด OK(200) ๋ผ๋Š” ๊ณต์‹์ด ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์œผ๋ฉด์„œ ์™„์ „ํžˆ ์ž˜๋ชป ์ดํ•ดํ•œ ๋ถ€๋ถ„์ด ์žˆ์–ด ์ดํ›„์— ๋ณต๊ธฐ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•œ๋‹ค. https://www.rfc-editor.org/rfc/rfc2616#section-9.7 RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1 www.rfc-editor.org ๊ธฐ์กด์— ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜๋˜ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž @DeleteMapping("{id}") @ResponseStatus(HttpStatus.OK) public void delete(@PathVariable Long id){ this.userService.delete(id); } ๋‚ด๊ฐ€ ์ด ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„์„ ํ•˜๋ฉด์„œ ์ƒ๊ฐํ•œ.. 2023. 3. 12.
[ Jackson ] Jackson mock ํ…Œ์ŠคํŠธ ์—ญ์ง๋ ฌํ™” ์˜ค๋ฅ˜ ๊ธฐ๋ณธ์ ์ธ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธ ํ•˜๋ฉด์„œ JSON์„ ํŒŒ์‹ฑํ•˜๋Š” JackSon ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋„ˆ๋ฌด ๋ชจ๋ฅด๊ณ  ์‚ฌ์šฉ์„ ํ•˜์˜€๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ์„ ํ•ด๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ผ๋‹จ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋ฅผ ์„ค๋ช…ํ•˜๊ณ  Jackson์ด ์–ด๋–ป๊ฒŒ ํŒŒ์‹ฑ์„ ํ•˜๊ณ  ๊ทธ ์ดํ›„์— ์–ด๋–ค ํ–‰๋™์„ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ๋‹ค. @PostMapping @ResponseStatus(HttpStatus.CREATED) public UserData create(@RequestBody UserData userData){ User user = userService.registerUser(userData); return UserData.builder() .email(user.getEmail()) .build(); } @Getter @Builder @AllArgsConstr.. 2023. 3. 11.
Spring Boot Test H2 In Memory ์„ค์ •ํ•˜๊ธฐ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ local์— DB๋ฅผ ์‹คํ–‰์„ ํ•ด์•ผ๋˜๋Š”๋ฐ ์ด๊ฒƒ์„ In Memory๋ฅผ ํ†ตํ•˜์—ฌ local์— ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์šฐ์„  ์„ค์ •์„ ์œ„ํ•ด์„œ src/test ์—์„œ resources ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด ์ฃผ๊ณ  application.yml๋„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. ์ด๋ ‡๊ฒŒ ์ถ”๊ฐ€๋œ application.yml์€ test์‹œ main directory ํ•˜์œ„์— ์žˆ๋Š” application.yml๋ณด๋‹ค ์šฐ์„ ๊ถŒ์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค. spring: datasource: url: jdbc:h2:mem:test username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: format_sql: .. 2023. 2. 28.