๊ฐ๋ฐ/Spring Boot
-
API ์์ธ ์ฒ๋ฆฌ - @ControllerAdvice๊ฐ๋ฐ/Spring Boot 2022. 7. 8. 15:14
์ง๋๊ธ https://mong-dev.tistory.com/44 API ์์ธ ์ฒ๋ฆฌ - HandlerExceptionResolver(2) : ResponseStatusExceptionResolver, DefaultHandlerExceptionResolver, ExceptionHan https://mong-dev.tistory.com/43 API ์์ธ ์ฒ๋ฆฌ - HandlerExceptionResolver(1) ์คํ๋ง ๋ถํธ์ ์์ธ ์ฒ๋ฆฌ ์คํ๋ง ๋ถํธ์ ๊ธฐ๋ณธ ์ค์ ์ ์ค๋ฅ ๋ฐ์์ /error ๋ฅผ ์ค๋ฅ ํ์ด์ง๋ก ์์ฒญํ๋ค. BasicErrorController ๋.. mong-dev.tistory.com @ControllerAdvice ์ด์ ๊ธ์์ ๋๋์ด @ExceptionHandler ๋ฅผ ์ฌ์ฉํด์ ์์ธ๋ฅผ ๊น๋ํ๊ฒ ์ฒ..
-
API ์์ธ ์ฒ๋ฆฌ - HandlerExceptionResolver(2) : ResponseStatusExceptionResolver, DefaultHandlerExceptionResolver, ExceptionHandlerExceptionResolver๊ฐ๋ฐ/Spring Boot 2022. 7. 8. 01:04
https://mong-dev.tistory.com/43 API ์์ธ ์ฒ๋ฆฌ - HandlerExceptionResolver(1) ์คํ๋ง ๋ถํธ์ ์์ธ ์ฒ๋ฆฌ ์คํ๋ง ๋ถํธ์ ๊ธฐ๋ณธ ์ค์ ์ ์ค๋ฅ ๋ฐ์์ /error ๋ฅผ ์ค๋ฅ ํ์ด์ง๋ก ์์ฒญํ๋ค. BasicErrorController ๋ ์ด ๊ฒฝ๋ก๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋ฐ๋๋ค. ( server.error.path ๋ก ์์ ๊ฐ๋ฅ, ๊ธฐ๋ณธ ๊ฒฝ๋ก / erro. mong-dev.tistory.com ์คํ๋ง ๋ถํธ๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ ExceptionResolver ๋ ๋ค์๊ณผ ๊ฐ๋ค. HandlerExceptionResolverComposite ์ ๋ค์ ์์๋ก ๋ฑ๋ก๋์ด ์๋ค. 1. ExceptionHandlerExceptionResolver @ExceptionHandler ์ ์ฒ๋ฆฌํ๋ค. API..
-
API ์์ธ ์ฒ๋ฆฌ - HandlerExceptionResolver(1)๊ฐ๋ฐ/Spring Boot 2022. 7. 7. 22:55
์คํ๋ง ๋ถํธ์ ์์ธ ์ฒ๋ฆฌ ์คํ๋ง ๋ถํธ์ ๊ธฐ๋ณธ ์ค์ ์ ์ค๋ฅ ๋ฐ์์ /error ๋ฅผ ์ค๋ฅ ํ์ด์ง๋ก ์์ฒญํ๋ค. BasicErrorController ๋ ์ด ๊ฒฝ๋ก๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋ฐ๋๋ค. ( server.error.path ๋ก ์์ ๊ฐ๋ฅ, ๊ธฐ๋ณธ ๊ฒฝ๋ก / error ) ์คํ๋ง ๋ถํธ๋ BasicErrorController ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ์ ๋ณด๋ค์ ํ์ฉํด์ ์ค๋ฅ API๋ฅผ ์์ฑํด์ค๋ค. ๋ค์ ์ต์ ๋ค์ ์ค์ ํ๋ฉด ๋ ์์ธํ ์ค๋ฅ ์ ๋ณด๋ฅผ ์ถ๊ฐํ ์ ์๋ค. server.error.include-binding-errors=always server.error.include-exception=true server.error.include-message=always server.error.include-stacktrace=always ๋ฌผ..
-
Http Message Converter ์ด์ผ๊ธฐ(2)๊ฐ๋ฐ/Spring Boot 2022. 7. 7. 17:01
Http Message Converter ์ด์ผ๊ธฐ(1) ์ ๋ค์ ๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์ :) https://mong-dev.tistory.com/41 HTTP Message Converter ์ด์ผ๊ธฐ(1) ๋ทฐ ํ ํ๋ฆฟ์ผ๋ก HTML์ ์์ฑํด์ ์๋ตํ๋ ๊ฒ์ด ์๋๋ผ, HTTP API์ฒ๋ผ JSON ๋ฐ์ดํฐ๋ฅผ HTTP ๋ฉ์์ง ๋ฐ๋์์ ์ง์ ์ฝ๊ฑฐ๋ ์ฐ๋ ๊ฒฝ์ฐ HTTP ๋ฉ์์ง ์ปจ๋ฒํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ํธ๋ฆฌํ๋ค. ์คํ๋ง MVC๋ ๋ค์์ ๊ฒฝ์ฐ์ mong-dev.tistory.com Http ๋ฉ์์ง ์ปจ๋ฒํฐ๋ ์คํ๋ง MVC ์ด๋์ฏค์์ ์ฌ์ฉ๋๋ ๊ฒ์ผ๊น? ์ฐ๋ฆฌ๊ฐ ๊ณ ๋ คํด์ผ ํ ๋ถ๋ถ์ ์ด๋ ธํ ์ด์ ๊ธฐ๋ฐ์ ์ปจํธ๋กค๋ฌ, ์ฆ @RequestMapping์ ์ฒ๋ฆฌํ๋ ํธ๋ค๋ฌ ์ด๋ํฐ์ธ RequestMappingHandlerAdapter(์์ฒญ ๋งคํ ํธ๋ค๋ฌ ์ด๋ํฐ)..
-
HTTP Message Converter ์ด์ผ๊ธฐ(1)๊ฐ๋ฐ/Spring Boot 2022. 7. 7. 03:14
๋ทฐ ํ ํ๋ฆฟ์ผ๋ก HTML์ ์์ฑํด์ ์๋ตํ๋ ๊ฒ์ด ์๋๋ผ, HTTP API์ฒ๋ผ JSON ๋ฐ์ดํฐ๋ฅผ HTTP ๋ฉ์์ง ๋ฐ๋์์ ์ง์ ์ฝ๊ฑฐ๋ ์ฐ๋ ๊ฒฝ์ฐ HTTP ๋ฉ์์ง ์ปจ๋ฒํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ํธ๋ฆฌํ๋ค. ์คํ๋ง MVC๋ ๋ค์์ ๊ฒฝ์ฐ์ HTTP ๋ฉ์์ง ์ปจ๋ฒํฐ๋ฅผ ์ ์ฉํ๋ค. HTTP ์์ฒญ : @RequestBody , HttpEntity(RequestEntity) HTTP ์๋ต : @ResponseBody , HttpEntity(ResponseEntity) HTTP ๋ฉ์์ง ์ปจ๋ฒํฐ ์ธํฐํ์ด์ค org.springframework.http.converter.HttpMessageConverter package org.springframework.http.converter; public interface HttpMessageConve..
-
HTTP API ์๋ต ์ ๋ฆฌ๊ฐ๋ฐ/Spring Boot 2022. 7. 7. 02:28
HTTP ๋ฉ์ธ์ง ๋ฐ๋๋ฅผ ์ง์ ์กฐํํ๊ณ ์ถ์ ๋, ์คํ๋ง MVC๋ ๋ค์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ง์ํ๋ค. HttpEntity HTTP header, body ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์กฐํํ ์ ์๋ค. - ๋ฉ์์ง ๋ฐ๋ ์ ๋ณด๋ฅผ ์ง์ ์กฐํ - ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ์กฐํํ๋ ๊ธฐ๋ฅ๊ณผ ๊ด๊ณ ์์ (@RequestParam X, @ModelAttribute X HttpEntity๋ ์๋ต์๋ ์ฌ์ฉ ๊ฐ๋ฅ) - ๋ฉ์์ง ๋ฐ๋ ์ ๋ณด ์ง์ ๋ฐํ, ํค๋ ์ ๋ณด ํฌํจ ๊ฐ๋ฅ - view ์กฐํX +) HttpEntity ๋ฅผ ์์๋ฐ์ ๋ค์ ๊ฐ์ฒด๋ค๋ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. RequestEntity HttpMethod, url ์ ๋ณด๊ฐ ์ถ๊ฐ, ์์ฒญ์์ ์ฌ์ฉ ResponseEntity HTTP ์ํ ์ฝ๋ ์ค์ ๊ฐ๋ฅ, ์๋ต์์ ์ฌ์ฉ return new ResponseEnti..
-
์คํ๋ง์ด ์ฌ๋ํ ๋์์ธ ํจํด๊ฐ๋ฐ/Spring Boot 2022. 5. 31. 00:51
๋์์ธ ํจํด - ๋ฒ ์คํธ ํ๋ํฐ์ค๋ฅผ ์ ๋ฆฌํ ๊ฒ ์คํ๋ง ํ๋ ์ ์ํฌ : ์๋ฐ ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ์ ํธํ๊ฒ ํด์ฃผ๋ ์คํ์์ค ๊ฒฝ๋๊ธ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ ์ด๋ํฐ ํจํด : ๋ณํ๊ธฐ. ์๋ก ๋ค๋ฅธ ๋ ์ธํฐํ์ด์ค ์ฌ์ด์ ํต์ ์ด ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ฒ. ํ ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ํด๋ผ์ด์ธํธ์์ ์ฌ์ฉํ๊ณ ์ํ๋ ๋ค๋ฅธ ์ธํฐํ์ด์ค๋ก ๋ณํํ๋ค. ์ด๋ํฐ๋ฅผ ์ด์ฉํ๋ฉด ์ธํฐํ์ด์ค ํธํ์ฑ ๋ฌธ์ ๋๋ฌธ์ ๊ฐ์ด ์ธ ์ ์๋ ํด๋์ค๋ค์ ์ฐ๊ฒฐํด์ ์ธ ์ ์๋ค. JDBC๊ฐ ์ด๋ํฐ ํจํด์ ์ด์ฉํด ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๋จ์ผํ ์ธํฐํ์ด์ค๋ก ์กฐ์ํ ์ ์๊ฒ ํด์ค๋ค. ํ๋ก์ ํจํด : ์ ์ด ํ๋ฆ์ ์กฐ์ ํ๊ฑฐ๋ ๋ณ๋์ ๋ก์ง์ฒ๋ฆฌ์ ๋ชฉ์ ์ผ๋ก ์ค๊ฐ์ ๋๋ฆฌ์๋ฅผ ๋๋ ํจํด ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ๋ ๋ฐํ๊ฐ์ ํน๋ณํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ๋ณ๊ฒฝํ์ง ์๋๋ค. - ๋๋ฆฌ์๋ ์ค์ ์๋น์ค์ ๊ฐ์ ์ด..
-
๊ฐ์ฒด ์งํฅ ์ค๊ณ 5์์น - SOLID๊ฐ๋ฐ/Spring Boot 2022. 5. 24. 01:02
SOLID๋ ๋ค์์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ 5์์น์ ๋๋ฌธ์์ด๋ก ํํํ ๋ง์ด๋ค. ํด๋น ์์น์ ์์ง๋๋ ๋์ด๊ณ (High Cohesion), ๊ฒฐํฉ๋๋ ๋ฎ์ถ๋ผ(Loose Coupling)๋ ๊ณ ์ ์์น์ ๊ฐ์ฒด ์งํฅ์ ๊ด์ ์์ ์ฌ์ ๋ฆฝํ ๊ฒ์ด๋ผ๊ณ ํ ์ ์๋ค. - SRP (Single Responsibility Principle) : ๋จ์ผ ์ฑ ์ ์์น - OCP (Open Closed Principle) : ๊ฐ๋ฐฉ ํ์ ์์น - LSP (Liskov Substitution Principle) : ๋ฆฌ์ค์ฝํ ์นํ ์์น - ISP (Interface Segregation Priniciple) : ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ๋ฒ์น - DIP (Dependency Inversion Principle) : ์์กด ์ญ์ ์์น ๊ฒฐํฉ๋? ๊ฒฐํฉ๋๋ ๋ชจ๋(ํด..