์ ์ฒด ๊ธ67 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. [ํ๋ก๊ทธ๋๋จธ์ค] N๊ฐ์ ์ต์๊ณต๋ฐฐ์(Java) https://school.programmers.co.kr/learn/courses/30/lessons/12953 ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr class Solution { public int solution(int[] arr) { int answer = 0; if (arr.length == 1){ return arr[0]; } int lcm = arr[0]; for (int i = 1; i < arr.length; i++){ lcm = getLeastCommonMultiple(lcm, arr[i]); } return lcm; } // .. 2023. 12. 1. [ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ณดํค (Java) https://school.programmers.co.kr/learn/courses/30/lessons/42890 ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr import java.util.*; class Solution { public int solution(String[][] relation) { int answer = 0; int rowCount = relation.length; int columnCount = relation[0].length; // ์ธ๋ฑ์ค ๋ฐฐ์ด ์ด๊ธฐํ List arr = new ArrayList(); for (int i = 0;.. 2023. 12. 1. [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. ์ด์ 1 2 3 4 ยทยทยท 12 ๋ค์