๐ Spring/๊ฐ๋
๋ฐ ์ดํด
2023.09.21
Intro ๊ธฐ๋ณธ์ ์ผ๋ก Spring MVC๋ ์กด์ฌํ์ง ์๋ API ์์ฒญ ์ ์๋ต์ ๋ค์๊ณผ ๊ฐ์ด ์ฃผ๊ณ ์์ต๋๋ค. { "timestamp":"2023-09-21T11:30:05.517+00:00", "status":404, "error":"Not Found", "path":"/api/404" } ์ ์๋ต์ Spring MVC๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํด์ฃผ๋ ์ค๋ฅ ์๋ต ์
๋๋ค. ๋ณดํต ์ค๋ฌด์์๋ ํ๋ ์์ํฌ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํด์ฃผ๋ ์๋ต๊ฐ์ ์ฌ์ฉํ๊ธฐ ๋ณด๋จ ๊ณตํต ์๋ต ํฌ๋งท์ ๋ง์ถฐ์ ์ฌ์ฉํ ๊ฒ ์
๋๋ค. ์ด๋ป๊ฒ ํ๋ฉด Not Found์ ๋ํ ์๋ต์ ์ปค์คํ
ํ ์ ์๋์ง์ ๋ด๋ถ์ ์ผ๋ก ์ด๋ป๊ฒ ๋์ํ๊ณ ์๋์ง๋ ํจ๊ป ์๋ฌ ๋ก๊ทธ์ ์ฝ๋๋ฅผ ํตํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์๋ฌ ์๋ต์ด ์์ฑ๋๊ธฐ๊น์ง์ ์ฌ์ ๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ์คํ๋งMVC์์๋ ์๋ฌ ๋ฉ์ธ์ง๋ฅผ..
๐ Spring/๊ฐ๋
๋ฐ ์ดํด
2023.08.24
@Valid Spring Boot์์ @Valid๋ฅผ @RequestBody ๊ฐ์ฒด์ ๋ถ์ด๊ฒ ๋๋ฉด, ์ด๋ ์คํ๋ง์ Hibernate Validator(javax.validation ํจํค์ง์ ์๋ JSR-303/JSR-380์ธ BeanValidation์ ํ์ฉํจ)๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. Spring MVC์์๋ Validation์ด ์ด๋ป๊ฒ ๋์ํ๋์ง MVC ๋์์๋ฆฌ์ ํจ๊ป ์ดํด๋ณด๊ฒ ์ต๋๋ค. Dispatcher Servlet ์๋๋ Spring MVC์ ๋์๊ตฌ์กฐ๋ฅผ ๋์ํํ ๊ฒ์
๋๋ค. ํ๋ํ๋ ์ฐจ๊ทผํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ ์ผ ๋จผ์ ๋ฐ๋ ๋์คํจ์ฒ ์๋ธ๋ฆฟ(ํ๋ก ํธ ์ปจํธ๋กค๋ฌ)์
๋๋ค. DispatcherServlet์ HandlerMapping ์ ๋ต์ ํตํด ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํด ์ค Controller๋ฅผ ์ฐพ์ต..
๐ Spring
2023.06.30
Validation ์์ฒญ ๋ฐ์ดํฐ์ ์ ํจ์ฑ ๊ฒ์ฆ(์ฌ์ฉ์์ ์์ด๋์ ๊ธธ์ด๋ผ๋์ง ์ ๊ทํํ์์ ๋ง์กฑํ๋์ง์ ๋ํ ๊ฒ์ฆ ๋ฑ๋ฑ)๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ๋ณดํต Service ๋ก์ง์ ๋ด๊ฒจ์์ต๋๋ค. DB ์ค๋ณต ์ฒดํฌ ๋ฑ ๋น์ฆ๋์ค ๋ก์ง์ ์๋น์ค์ ๋๊ณ , ์ด ๋ฐ์ดํฐ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์คํ๋ง ๋ถํธ์์ ์ ๊ณตํด์ฃผ๋ Validation ๊ธฐ๋ฅ์ ์ด์ฉํ๋ฉด ์์ฝ๊ฒ ๊ฒ์ฆํ ์ ์์ ๋ฟ๋๋ฌ ์๋น์ค์๋ ์ค์ง ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง๋ง ๋ ์ ์๋ ์ฅ์ ์ ๊ฐ์ ธ๊ฐ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ ์ค์ต์ ํตํด ์์ธํ๊ฒ ์์๋ณด๊ฒ ์ต๋๋ค. ๊ฐ๋ฐํ๊ฒฝ SpringBoot 2.7.9 JDK 11 Gradle ์์กด์ฑ ์ถ๊ฐ SpringBoot 2.3.0 ์ด์๋ถํฐ๋ ์์กด์ฑ์ด ํฌํจ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์ง์ ์ถ๊ฐํด์ค์ผ ํฉ๋๋ค. implementation 'org.springfram..
๐ Spring
2023.06.08
Spring Boot 3.x.x ๋ถํฐ๋ JavaEE โ Jakarta EE๋ก ๊ต์ฒด๋์์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ด์ ์ ์ฌ์ฉํ๋ Springfox๋ ํ์ฌ Spring Boot 3.x.x์ ๋ํ ์
๋ฐ์ดํธ๊ฐ ์ด๋ค์ง์ง ์๊ณ ํ์์ ์๋ ์ฌ์ฉํ ์ ์์์ต๋๋ค. Springdoc ๊ณต์๋ฌธ์์์ ์ด๋ป๊ฒ ์ ์ฉํ ์ ์๋์ง์ ๋ํ ์์ธํ ๋ฐฉ๋ฒ์ด ๋์์์ผ๋ ์ฐธ๊ณ ํ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. springdoc-openapi v2.0.2 ์์กด์ฑ ์ถ๊ฐ Spring Boot 3.x.x๋ถํฐ๋ ์๋ ์์กด์ฑ์ ์ถ๊ฐํด์ฃผ๋ฉด Swagger-ui ์ค์ ์ ๋์
๋๋ค. implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2" springdoc-openapi-ui โ springdoc-..
๐ Spring/Spring Security
2022.12.27
CORS (Cross-Origin Resource Sharing) ์ด๋? A๋ผ๋ ๋๋ฉ์ธ์์ ์ ๊ณต๋๋ FE์์ โ B๋ผ๋ ๋๋ฉ์ธ์ผ๋ก ์ ๊ณต๋๋ BE์ HTTP ์์ฒญ์ ํ์ ๊ฒฝ์ฐ, ๋ธ๋ผ์ฐ์ ๋ ์ด๋ฅผ ์๋ก ๋ค๋ฅธ ๋๋ฉ์ธ์์ ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ๋ ๊ฒ์ด๋ผ ํ๋จํ๊ณ ๊ทธ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํธ์ถ์ ๊ธ์งํ๋ ๊ฒ์ด๋ค. Preflight Request ๋ธ๋ผ์ฐ์ ์์ ์ค์ HTTP ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ ๋ธ๋ผ์ฐ์ ์ค์ค๋ก ์ด ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ์ด ์์ ํ์ง ์๋น ์์ฒญ์ ํ๊ฒ ๋๋๋ฐ ์ด๊ฒ ๋ฐ๋ก Preflight Request๋ผ๊ณ ํฉ๋๋ค. ์ด Preflight Request๋ OPTION ๋ฉ์๋๋ฅผ ์ด์ฉํด ์์ฒญํ๋๋ฐ ์๋ฒ์์ ๋ณด๋ด์ค ์๋ต ํค๋์ Access-Controller-* ํค๋๋ค์ด ์ ๊ตฌ์ฑ๋์ด์๋์ง ํ์ธํฉ๋๋ค. GET, POST, HEAD ์์ฒญ..
๐ Spring/Spring Security
2022.12.09
Spring Boot 2.7 (Spring 5.7.0-M2) ๋ถํฐ WebSecurityConfigurerAdapter๋ Deprecated๊ฐ ๋์๋ค. Spring Security without the WebSecurityConfigurerAdapter In Spring Security 5.7.0-M2 we deprecated the WebSecurityConfigurerAdapter, as we encourage users to move towards a component-based security configuration. authz .anyRequest().authenticated() ) .httpBasic(withDefaults()); } } ์คํ๋ง์ SecurityFilterChain ๋น์ ๋ฑ๋กํ..