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. ์ด์ 1 2 ๋ค์