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

์ „์ฒด ๊ธ€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.