๐Ÿณ TIL

์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ ChatGpt API ์‚ฌ์šฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ @AutoConfiguration ๊ณต๋ถ€ ์‚ด์ง ๐Ÿ’ญ ๋Š๋‚€ ์  & ๋ฐฐ์šด ์  ์˜ค๋Š˜์€ ํ”„๋กœ์ ํŠธ ์ค€๋น„๋ฅผ ์œ„ํ•ด chatGpt api ์‚ฌ์šฉ๋ฒ•์„ ์กฐ๊ธˆ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ, ์—ด์‹ฌํžˆ ์‚ฝ์งˆํ•˜๊ณ  ํ•ด๋ณด๋ฉด์„œ ์–ด๋Š์ •๋„ ์ดํ•ดํ–ˆ๋‹ค ์‹ถ์„ ๋•Œ, ์ด๋ฏธ ์ž˜ ์ •๋ฆฌ๋˜์–ด์žˆ๋Š” ๋ธ”๋กœ๊ทธ๋ฅผ ๋ฐœ๊ฒฌํ•ด๋ฒ„๋ ธ๋‹ค.. ์ด๊ฑฐ ์™„์ „.. ์Šฌํ”ˆ๋””์š”..??ใ… ใ…  ๐Ÿ”ฅ ๋‚ด์ผ ๊ณต๋ถ€ํ•  ๋‚ด์šฉ @AutoConfiguration ๊ณต๋ถ€ ๋งˆ์ €ํ•˜๊ธฐ ์Šคํ”„๋ง ์ด๋ฒคํŠธ ๋ฐœํ‘œ์ž๋ฃŒ ์ค€๋น„ ์Šคํ”„๋ง๋ถ€ํŠธ ๊ฐ•์˜ ์˜ค๋ธŒ์ ํŠธ ๋ฐฑ์ค€ ์กฐ๊ธˆ ํ’€๊ธฐ ์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ ํฌ์ŠคํŒ…
์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ Interceptor ์ ์šฉ์›๋ฆฌ ํŒŒ์•…ํ•˜๊ธฐ ArgumentResolver์™€ MessageConverter ์ƒ๊ธฐ? ๋ฆฌ๋ทฐ์–ด๋‹˜๊ณผ ํ† ๋ก ? ๐Ÿ’ญ ๋Š๋‚€ ์  & ๋ฐฐ์šด ์  ์˜ค๋Š˜์€ ๋ญ”๊ฐ€ ๋งŽ์ด ํ•œ ๊ฒƒ ๊ฐ™์€๋ฐ, ์ •์ž‘ ๋ณด๋‹ˆ ํ•œ๊ฒŒ ๋ณ„๋กœ ์—†๋„น.. ๋‚ด์ผ๋ถ€ํ„ฐ๋Š” ์ข€ ๋งŽ์•„์งˆ ์˜ˆ์ •์ด๋‹ค! ๐Ÿ”ฅ ๋‚ด์ผ ๊ณต๋ถ€ํ•  ๋‚ด์šฉ ์Šคํ”„๋ง๋ถ€ํŠธ ๊ฐ•์˜ chatgpt api ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์˜ค๋ธŒ์ ํŠธ ๋ฐฑ์ค€ ์กฐ๊ธˆ ํ’€๊ธฐ ์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ ํฌ์ŠคํŒ… https://ttl-blog.tistory.com/1282 [Spring MVC] ์ธํ„ฐ์…‰ํ„ฐ๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”๊ฐ€(feat. HandlerExecutionChain, ์ธํ„ฐ์…‰ํ„ฐ์˜ ์˜ˆ์™ธ์ฒ˜๋ฆฌ) ๐Ÿง ์„œ๋ก  ์Šคํ”„๋ง์—์„œ๋Š” ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ํ†ตํ•ด, ์ปจํŠธ๋กค๋Ÿฌ(ํ•ธ๋“ค๋Ÿฌ)๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „๊ณผ ํ›„์— ์ถ”๊ฐ€์ ์ธ ์ž‘์—…๋“ค์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ธ..
์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ 2๋‹จ๊ณ„ ๋ฏธ์…˜์— ๋ฉ€ํ‹ฐ๋ชจ๋“ˆ ์ ์šฉ ExceptionHandler, ControllerAdvice ๋™์ž‘์›๋ฆฌ ํ™•์ธํ•˜๊ธฐ ๋ฐฑ์ค€ ์กฐ๊ธˆ ํ’€๊ธฐ ๐Ÿ’ญ ๋Š๋‚€ ์  & ๋ฐฐ์šด ์  ์˜ค๋Š˜์€ ํ•˜๋ฃจ ์ ˆ๋ฐ˜์€ ๋ฉ€ํ‹ฐ๋ชจ๋“ˆ ์„ค๊ณ„ํ•˜๋Š”๋ฐ, ๋‚˜๋จธ์ง€ ์ ˆ๋ฐ˜์€ ExceptionHandler ๋‚ด๋ถ€๊ตฌํ˜„ ํŒŒ์•…ํ•˜๋Š”๋ฐ ์ผ์—ˆ๋‹ค. ์ง‘ ์™€์„œ๋Š” ์˜ค๋ธŒ์ ํŠธ๋ž‘ ์Šคํ”„๋ง๋ถ€ํŠธ ๊ฐ•์˜์ข€ ๋“ค์œผ๋ ค ํ–ˆ๋Š”๋ฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜๋„ ํ•ด์•ผ์ง€ ํ•˜๊ณ .. ํ•˜๋‹ค๊ฐ€ ๋ฌธ์ œ ํ•˜๋‚˜์—์„œ ๋ง‰ํ˜€์„œ ์ฉ”์ฉ”๋งค๋Š” ์ค‘.. ๋‚ด์ผ ๋งจ์ •์‹ ์œผ๋กœ ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ด์•ผ๊ฒ ๋‹ค.. ๐Ÿ”ฅ ๋‚ด์ผ ๊ณต๋ถ€ํ•  ๋‚ด์šฉ ์Šคํ”„๋ง๋ถ€ํŠธ ๊ฐ•์˜ ์˜ค๋ธŒ์ ํŠธ ๋ฐฑ์ค€ ์กฐ๊ธˆ ํ’€๊ธฐ ์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ ํฌ์ŠคํŒ… https://ttl-blog.tistory.com/1280 [Spring MVC] @ControllerAdvice(@ExceptionHandler)๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘..
์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ 2๋‹จ๊ณ„ ๋ฏธ์…˜ ๊ตฌํ˜„ Source Set ์ ์šฉํ•ด๋ณด๊ธฐ ๋ฉ€ํ‹ฐ๋ชจ๋“ˆ ์ ์šฉํ•ด๋ณด๊ธฐ ๐Ÿ’ญ ๋Š๋‚€ ์  & ๋ฐฐ์šด ์  ๋ญ˜ ๊ณต๋ถ€ํ•ด์•ผ ํ• ์ง€ ๊ณ„์† ๊ณ ๋ฏผ์ค‘์ด๋‹ค. ์˜ค๋Š˜๋„ ๊ณ„์† ๋ญ ๊ณต๋ถ€ํ• ์ง€๋งŒ ๊ณ ๋ฏผํ•˜๋‹ค ๊ฒฐ๊ตญ ์ œ๋Œ€๋กœ ๋ญ ํ•œ ๊ฑฐ ์—†์ด source set ์ ์šฉํ•ด๋ณด๊ณ , ๋ฉ€ํ‹ฐ๋ชจ๋“ˆ ์ ์šฉํ•ด๋ณด๊ณ  ๋... ๋ฆฌ๋ทฐ์–ด ํ† ๋‹ˆ์—๊ฒŒ๋„ ๋‚ด ์ง€๊ธˆ ๊ณ ๋ฏผ์„ ๋ง์”€๋“œ๋ ค์„œ, ๋ฐฉํ–ฅ์„ฑ์„ ๊ณ ๋ฏผํ•ด ๋ณด์•„์•ผ๊ฒ ๋‹ค. ๐Ÿ”ฅ ๋‚ด์ผ ๊ณต๋ถ€ํ•  ๋‚ด์šฉ ๋ฉ€ํ‹ฐ๋ชจ๋“ˆ ๋งˆ์ € ๊ตฌํ˜„ ExceptionHandler, ControllerAdvice ๋™์ž‘์›๋ฆฌ ํ™•์ธํ•˜๊ธฐ ์Šคํ”„๋ง๋ถ€ํŠธ ๊ฐ•์˜ ์˜ค๋ธŒ์ ํŠธ ์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ ํฌ์ŠคํŒ…
์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ jdk ๋™์  ํ”„๋ก์‹œ & CGLIB ๋™์ž‘ ์‚ด์ง ์‚ดํŽด๋ณด๊ธฐ ๐Ÿ’ญ ๋Š๋‚€ ์  & ๋ฐฐ์šด ์  ์˜ค๋Š˜์€ ์ผ์ด ์žˆ์–ด์„œ ๊ณต๋ถ€๋ฅผ ๋ชป ํ–ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๊ฐ€ jdbc ์˜์กด์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ(jdk ๋™์  ํ”„๋ก์‹œ ๋Œ€์‹  CGLIB์ด ์ ์šฉ)ํ•˜๊ณ , jdbc ์˜์กด์„ฑ์ด ์—†๋Š” ๊ฒฝ์šฐ(Jdk dynamic proxy ์ ์šฉ) ์•„๋ฌด๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. public interface Conddd { @Repository @Scope(proxyMode = ScopedProxyMode.INTERFACES) static final class DD implements Conddd { } } spring.aop.proxy-target-class=false @Repository ์–ด๋…ธํ…Œ์ด์…˜์— AOP๊ฐ€ ์ ์šฉ๋˜๋Š”์ง€ ์•„๋‹Œ์ง€ ์ฐจ์ด ๊ฐ™์€๋ฐ,..
์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ gradle ์ •๋ฆฌ ์™„๋กœ ๐Ÿ’ญ ๋Š๋‚€ ์  & ๋ฐฐ์šด ์  ๋“œ๋””์–ด gradle ์ •๋ฆฌ ๋! Source Set์ด๋‚˜ ๊ด€๋ จํ•ด์„œ๋„ ์•Œ์•„๋ณด๊ณ  ์ •๋ฆฌํ•˜๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ, ๋๋„ ์—†์–ด์งˆ ๊ฒƒ ๊ฐ™์•„์„œ ๋‚˜์ค‘์— ์ •๋ฆฌํ•˜๊ธฐ๋กœ..! ๋‚ด์ผ์€ ์‹œ๊ฐ„์ด๋‚˜ ์ •์‹ ์ด ๋ ๋ผ๋‚˜ ๋ชจ๋ฅด๊ฒ ๋‹ค. ๋˜๋ฉด ํ• ํ…๋ฐ ์•„๋งˆ,, ์•„๋ฌด๊ฒƒ๋„ ๋ชป ํ•  ๋“ฏ.. ๐Ÿ”ฅ ๋‚ด์ผ ๊ณต๋ถ€ํ•  ๋‚ด์šฉ 2๋‹จ๊ณ„ ๋ฏธ์…˜ ๊ตฌํ˜„ get, post, put ๋“ฑ์˜ http method ์ •๋ฆฌํ•˜๊ณ  ํฌ์ŠคํŒ… Http Status Code ์ •๋ฆฌํ•˜๊ณ  ํฌ์ŠคํŒ… 1๋‹จ๊ณ„ ๋ฏธ์…˜ ํšŒ๊ณ  ์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ ํฌ์ŠคํŒ… https://ttl-blog.tistory.com/1273 [Gradle] ์ž๋ฐ” ํ”Œ๋Ÿฌ๊ทธ์ธ ๐Ÿง java ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž๋ฐ” ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ปดํŒŒ์ผ, ํ…Œ์ŠคํŠธ ๋ฐ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๋“ค์„ ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค...
์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ gradle ๊ณ„์† ์ •๋ฆฌ์ค‘ (๋งŽ์ด ๋ชป ํ–ˆ๋‹ค..ใ… ใ… ) ๐Ÿ’ญ ๋Š๋‚€ ์  & ๋ฐฐ์šด ์  ์˜ค๋Š˜์€ ์ง„์งœ ํ•œ๋‘์‹œ๊ฐ„..? ๋ฐ–์— ์ •๋ฆฌ ๋ชปํ•ด๋ฒ„๋ฆฌ๊ธฐ... ๊ทธ๋ƒฅ ์ข€ ๋ฐ”๋นด๋‹ค.. ใ…  ๐Ÿ”ฅ ๋‚ด์ผ ๊ณต๋ถ€ํ•  ๋‚ด์šฉ gradle ์ •๋ฆฌ get, post, put ๋“ฑ์˜ http method ์ •๋ฆฌ Http Status Code ์ •๋ฆฌ ์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ ํฌ์ŠคํŒ…
์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ gradle ๊ณ„์† ์ •๋ฆฌ์ค‘ ๐Ÿ’ญ ๋Š๋‚€ ์  & ๋ฐฐ์šด ์  ์˜ค๋Š˜์€ ์กฐ๊ธˆ ๋ฐ”๋ป์„œ & ๋‚ด์šฉ์ด ๋„ˆ๋ฌด ์–ด๋ ค์›Œ์„œ ๋งŽ์ด ์ •๋ฆฌํ•˜์ง€๋Š” ๋ชปํ–ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ๋‚ด์šฉ๋งŒ ์ •๋ฆฌํ•˜๋ ค๋Š”๋ฐ, ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•˜๋‹ค๋ณด๋‹ˆ ์–ด๋Š์ˆœ๊ฐ„ ๊ณต์‹๋ฌธ์„œ์— ๋‚˜์˜จ ๋‚ด์šฉ์„ ์ „๋ถ€ ๋‹ค ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค. ์ดํ•ด๋„ ์•ˆ๋˜๊ณ  ๋„ˆ๋ฌด ์–ด๋ ต๊ณ  ์–ด์ฐจํ”ผ ๋‹ค ๊นŒ๋จน์„๊ฑด๋ฐ ์ด๊ฒŒ ๋ญ ํ•˜๋Š”๊ฑด๊ฐ€ ํ•˜๋Š” ์ƒ๊ฐ์ด ์กฐ๊ธˆ ๋“ค์—ˆ๋‹ค.. :( ๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ์ดํ•ด๊ฐ€ ์•ˆ๋˜๋Š” ๋ถ€๋ถ„๋“ค ์ค‘์—์„œ, api์™€ implementation์„ ์ดํ•ดํ•˜๋Š” ๋ฐ, ๊ทธ๋ฆฌ๊ณ  gradle์„ ์ •๋ง ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๊ตณ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฐœ๋…์ธ ๊ฒƒ ๊ฐ™์œผ๋ฉด ์ •๋ฆฌํ•˜์ง€ ์•Š๊ณ  ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ์œผ๋กœ ๊ฒฐ์ •ํ•˜์˜€๋‹ค. ๊ทธ๋žฌ๋Š”๋ฐ๋„ ์˜์–ด๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ค์›Œ์„œ ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค๋ฆฌ ใ… ใ… . ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๋‹ค๋ณด๋‹ˆ ์˜์–ด๋„ ์กฐ๊ธˆ ์ต์ˆ™ํ•ด์ง€๋Š” ๋Š๋‚Œ์ด๊ณ , gra..
๋ง ๋ž‘
'๐Ÿณ TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (35 Page)