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

Spring8

Spring Security์—์„œ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ๊ฐ€ ControllerAdvice์—์„œ ํ•ธ๋“ค๋ง๋˜๋Š” ๋ฌธ์ œ Spring Security์—์„œ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ๊ฐ€ ControllerAdvice์—์„œ ํ•ธ๋“ค๋ง๋˜๋Š” ๋ฌธ์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•œ Exception์ด ControllerAdvice์— ํ•ธ๋“ค๋ง๋˜๋Š” ๊ฒƒ์ด ๋ญ๊ฐ€ ๋ฌธ์ œ์ผ๊นŒ์š”?  ์ตœ๊ทผ์— Client์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” error ๋ฉ”์„ธ์ง€๋ฅผ ๊ณตํ†ตํ™”ํ•˜๊ธฐ ์œ„ํ•ด Rest Controller Advice์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.@RestControllerAdvicepublic class GlobalExceptionHandler extends ResponseEntityExceptionHandler { ... @ExceptionHandler(Exception.class) public ResponseEntity handleException(HttpServletRequest .. 2024. 4. 25.
[Spring] OpenFeign์„ ์ด์šฉํ•˜์—ฌ API ํ†ต์‹ ํ•ด๋ณด๊ธฐ (feat. ๊ณ ์–‘์ด ์‚ฌ์ง„ ๊ฒ€์ƒ‰) OpenFeign์„ ์ด์šฉํ•˜์—ฌ API ํ†ต์‹ ํ•ด๋ณด๊ธฐ (feat. ๊ณ ์–‘์ด ์‚ฌ์ง„ ๊ฒ€์ƒ‰) ํ•ด๋‹น ์ฝ”์Šค์˜ ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. [Java/Spring]๊ณ ์–‘์ด ์‚ฌ์ง„ ๊ฒ€์ƒ‰ ์‚ฌ์ดํŠธ API ๊ณผ์ œ ํ’€์–ด๋ณด๊ธฐ [Java/Spring]๊ณ ์–‘์ด ์‚ฌ์ง„ ๊ฒ€์ƒ‰ ์‚ฌ์ดํŠธ API ๊ณผ์ œ ํ’€์–ด๋ณด๊ธฐ [Java/Spring]๊ณ ์–‘์ด ์‚ฌ์ง„ ๊ฒ€์ƒ‰ ์‚ฌ์ดํŠธ API ๊ณผ์ œ ํ’€์–ด๋ณด๊ธฐ ์ฝ”์Šค ๋‚œ์ด๋„ ์ดˆ๊ธ‰ ์‚ฌ์šฉ ์–ธ์–ด # java ๊ฐ•์˜ ์†Œ๊ฐœ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ณผ์ œํ…Œ์ŠคํŠธ ์—ฐ์Šต์— ์žˆ๋Š” ๊ณ ์–‘์ด ์‚ฌ์ง„ ๊ฒ€์ƒ‰ ์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉ๋œ API๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•ด school.programmers.co.kr ์ œ๊ฐ€ ์—ฐ๋™ํ•  ์™ธ๋ถ€ API๋Š” ๊ณ ์–‘์ด ์‚ฌ์ง„์„ ์กฐํšŒํ•˜๋Š” The Cat API์ž…๋‹ˆ๋‹ค. https://thecatapi.com/ The Cat API - Cats as a Service. A public .. 2023. 4. 25.
[Spring] Filter์™€ Interceptor ์ฐจ์ด Spring์—์„œ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ถ„๋ฆฌ๋˜์–ด ๊ณตํ†ต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์—…๋ฌด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡๊ฐ€์ง€์˜ ๊ธฐ๋Šฅ๋“ค์„ ์ง€์›ํ•œ๋‹ค. Filter (ํ•„ํ„ฐ) Interceptor(์ธํ„ฐ์…‰ํ„ฐ) AOP(๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ) ์œ„์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์€ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋Šฅ์„ ๋ชจ๋“ˆํ™”ํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ถ„๋ฆฌํ•˜์—ฌ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ณ  ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. AOP๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์— ๊ฑธ์ณ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค๋ฉด, Filter์™€ Interceptor๋Š” ์ฃผ๋กœ Controller ๋ ˆ์ด์–ด์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๊ฐ€๋กœ์ฑ„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. Filter์™€ Interceptor์˜ ์ฐจ์ด์ ์„ ์ค‘์ ์ ์œผ๋กœ ์ •๋ฆฌํ•ด๋ณด์ž. Filter J2EE ํ‘œ์ค€ ์ŠคํŽ™ ๊ธฐ๋Šฅ์œผ๋กœ ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ(Dispatcher Servlet)์— ์š”์ฒญ์ด .. 2023. 4. 22.
[JPA] ์ปค์„œ ๊ธฐ๋ฐ˜ pagenation ๊ตฌํ˜„ํ•˜๊ธฐ ์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜ Cursor ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‘๋‹ตํ•ด์ค€ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์Œ n๊ฐœ ์š”์ฒญ/์‘๋‹ต offset ๊ธฐ๋ฐ˜ ์ฟผ๋ฆฌ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด SELECT * FROM items WHERE ์กฐ๊ฑด๋ฌธ ORDER BY id DESC OFFSET ํŽ˜์ด์ง€๋ฒˆํ˜ธ LIMIT ํŽ˜์ด์ง€์‚ฌ์ด์ฆˆ cursor ๊ธฐ๋ฐ˜ ์ฟผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. SELECT * FROM items WHERE ์กฐ๊ฑด๋ฌธ AND id < ๋งˆ์ง€๋ง‰์กฐํšŒ_id ORDER BY id DESC LIMIT ํŽ˜์ด์ง€์‚ฌ์ด์ฆˆ ์ง์ „ ์กฐํšŒ ๊ฒฐ๊ณผ์˜ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋กœ ๋“ค์–ด๊ฐ€๋Š”๋ฐ SQL ํ‚ค์›Œ๋“œ๊ฐ€ ์•„๋‹Œ ๊ณ ์ •๋œ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ๋•Œ๋ฌธ์— ์ •์  ์ฟผ๋ฆฌ๋กœ์„œ์˜ ํ•œ๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. (๋ฌผ๋ก  ๋™์  ์ฟผ๋ฆฌ์ธ QueryDSL์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.) controller /** * ๊ฒŒ์‹œ๋ฌผ page .. 2023. 3. 1.
[JPA] ์˜คํ”„์…‹ ๊ธฐ๋ฐ˜ Pagenation ๊ตฌํ˜„ํ•˜๊ธฐ Spring Data JPA์—์„œ๋Š” Pagination์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก Pageable ๊ฐ์ฒด๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์˜คํ”„์…‹ ๊ธฐ๋ฐ˜ Pagenation DB์˜ offset์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ‘ํŽ˜์ด์ง€’ ๋‹จ์œ„๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์š”์ฒญ/์‘๋‹ต ํ•œ๋‹ค. controller /** * ๊ฒŒ์‹œ๋ฌผ page ์กฐํšŒ * * @param pageable * @return Page */ @GetMapping(produces = APPLICATION_JSON_VALUE) public ApiResponse getPosts(@PageableDefault(sort = "id", direction = Sort.Direction.DESC) Pageable pageable) { Page pages = postService.findAll(pageable); ret.. 2023. 3. 1.
[Spring] Spring MVC โ€ป Spring MVC ๋ฐœํ‘œ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค! Spring MVC ๋ž€? Spring ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘์— ์›น ๊ณ„์ธต์„ ๋‹ด๋‹นํ•˜๋Š” ๋ชจ๋“ˆ ์ค‘ ํ•˜๋‚˜๋กœ ์ •์‹ ๋ช…์นญ์€ Spring Web MVC ์ž…๋‹ˆ๋‹ค. ๐Ÿ’ก Spring MVC๋Š” Servlet API์œ„์—์„œ ๋™์ž‘ํ•˜๋ฉฐ Model, View, Controller ์„ธ๊ฐ€์ง€ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•ด ํด๋ผ์ด์–ธํŠธ์˜ ๋‹ค์–‘ํ•œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹จ์ˆœ ํ…์ŠคํŠธ ํ˜•์‹๋ถ€ํ„ฐ REST ํ˜•์‹, View ํ˜•์‹์˜ ์‘๋‹ต์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ตฌ์„ฑ๋œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. Spring MVC๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœ์ž๋ฅผ ํŽธํ•˜๊ฒŒ ํ•ด์คฌ๋Š”์ง€ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ๊ณผ ๋™์ž‘ ๋ฐฉ์‹์„ ์ค‘์‹ฌ์œผ๋กœ ๋ฐœํ‘œ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ Spring MVC๊ฐ€ ์žˆ๊ธฐ ์ „์—๋Š” HTML ์ฝ”๋“œ์— JAVA ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด ๋™์  ์›น ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” JSP์™€ ์„œ.. 2023. 2. 18.