๊ฐ๋ฐ/Spring8 Spring boot with Swagger 3.0 OpenAPI๋? OpenAPI Specification(OAS)๋ผ๊ณ ๋ ํ๋ OpenAPI๋ RESTful API๋ฅผ ๊ธฐ์ ์๋ ๊ท์น์ ๋ง๊ฒ API Spec์ json์ด๋ yaml๋ก ํํํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ค. RESTful API ๋ฅผ ๊ธฐ์ ํ๋ ํ์ค์ผ๋ก ์๋น์ค์์ ์ ๊ณตํ๋ API ์ ๊ธฐ๋ฅ๊ณผ End Point ๋ฅผ ๊ฐ๋ฐ์๋ ์์คํ ์ด ์๋์ผ๋ก ๋ฐ๊ฒฌํ๊ณ ์ฒ๋ฆฌํ๋๋ฐ ํ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ค. ์ ์๋ Swagger 2.0๊ณผ ๊ฐ์ ์ด๋ฆ์ผ๋ก ๋ถ๋ ธ๋ค๊ฐ 3.0๋ฒ์ ์ผ๋ก ์ฌ๋ผ์ค๋ฉด์ OpenAPI 3.0 Specification(๋๋ Swagger 3.0)์ผ๋ก ์นญํ๋ค. ๐ Open API(Open Application Programming Interface, ๊ณต๊ฐ API) ๋๊ตฌ๋ ์ฌ์ฉํ ์ ์๋๋ก ๊ณต๊ฐ๋ API๋ฅผ ๋งํ๋ค. Public.. 2022. 11. 3. Spring Security ์ค๋ณต ๋ก๊ทธ์ธ ๋ฐฉ์ง ์ค์ WebSecurityConfigurerAdapter๋ฅผ ๊ตฌํํ Spring Security ์ค์ ํ์ผ ๋ด ์๋์ ๊ฐ์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค. http .sessionManagement() .maximumSessions(1) .maxSessionsPreventsLogin(false) .expiredUrl("/login") .sessionRegistry(sessionRegistry()); - maximumSessions ์ต๋ ์ ์ง ๊ฐ๋ฅํ ์ธ์ ์๋ 1๋ก ์ค์ - maxSessionsPreventsLogin ์ ์ค๋ณต ๋ก๊ทธ์ธ์ด ๋์์ ๋ ๋จผ์ ๋ก๊ทธ์ธํ ์ฌ์ฉ์๋ฅผ ์ธ์ ์์ ์ํค๋ ค๋ฉด false, ๋์ค์ ๋ก๊ทธ์ธํ ์ฌ์ฉ์๋ฅผ ํ๊ธฐ๋ ค๋ฉด true๋ก ์ค์ @Configuration @EnableWebSecurity @Required.. 2022. 3. 15. Spring Boot ํ๋ก์ ํธ git ์ฐ๋ Spring Boot + Git Spring Boot ํ๋ก์ ํธ ํ์ ๊ด๋ฆฌ๋ฅผ ์ํด git๊ณผ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ด๋ค. 1. Clone Git Repository STS์์ Window > Show View > Other... > Git ๊ฒ์ > Git Repositories ์ ํ ์ค๋ฅธ ์ชฝ ์๋จ์ Open Perspective ๋ฒํผ(ํ ์ด๋ธ + ๋ฒํผ)์ ๋๋ฌ ๋ ์ฝ๊ฒ Git Repository์ ์ ๊ทผํ ์ ์๋ค. 2. Clone Git Repository Clone a Git repository ๋ฒํผ์ ๋๋ฌ ์์ ์ git respository์์ ๋ณต์ฌํ url๊ณผ git ID/PW๋ฅผ ๋ฃ์ด์ค๋ค. ๋ค์์ผ๋ก ๋์ด๊ฐ ๋ก์ปฌ ์ ์ฅ์๋ฅผ ์ง์ ํ๋ค. ์ด๋ ๊ฒ ๋ง๋ค๋ฉด Git Repository์ ๋ด๊ฐ ์ฐ๊ฒฐํ repository๊ฐ ์ถ๊ฐ๋๋ค.. 2022. 3. 9. Spring Boot์ MySQL / Mybatis ์ฐ๊ฒฐํ๊ธฐ Spring Boot + MyBatis + MySQL Spring Boot ํ๋ก์ ํธ์์ MyBatis๋ฅผ ์ด์ฉํ MySQL ์ฐ๋ ๋ฐฉ๋ฒ์ด๋ค. * Spring Boot ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ ๊ธฐ๋ณธ์ ์ธ ์ธํ ์ ํ๋ ๋ฐฉ๋ฒ์ ์ฌ๊ธฐ์ 1. ์์กด์ฑ ์ถ๊ฐ mybatis ๋ฐ mysql์ ์ฌ์ฉํ๊ธฐ ์ํด ํด๋น ์์กด์ฑ์ ์ถ๊ฐํ๋ค. maven์ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์ ์ค์ ํ์ผ์ธ pom.xml์์ ์์กด์ฑ์ ์ถ๊ฐํ๋ฉด ๊ธ๋ก๋ฒ ์ ์ฅ์์์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ก์ปฌ ์ ์ฅ์๋ก ๋ค์ด๋ก๋ํ๊ณ ํด๋์ค ํจ์ค๋ฅผ ์ง์ ํ์ฌ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค. ์๋ ๋งํฌ์ MVN Repository์์ ์ํ๋ ์์กด์ฑ์ ๊ฒ์ํ์ฌ ์ถ๊ฐํ ์ ์๋ค. ๋ณดํต ๋ณดํธ์ ์ธ ๋ฒ์ ์ด๋ ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ๋ค. https://mvnrepository.com/artifact/mysq.. 2022. 3. 9. Spring Boot ํ๋ก์ ํธ ์์ฑํ๊ธฐ Spring Boot ํ๋ก์ ํธ ์์ฑํ๊ธฐ STS์์ Spring Boot ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด๋ค. 1. File > New > Spring Starter Project > Spring Starter Project ์ ํ Spring Starter Project: Spring Boot๋ฅผ ์ด์ฉํ๋ ํ๋ก์ ํธ Spring Legacy Project: ์ผ๋ฐ์ ์ธ Spring Framework ํ๋ก์ ํธ * Spring Starter Project๊ฐ ๋ณด์ด์ง ์์ ๊ฒฝ์ฐ ๋งจ ์๋ Other... ์์ ๊ฒ์ 2. New Spring Starter Project ์ค์ ํ๋ก์ ํธ ๊ธฐ๋ณธ ์ค์ 3. New Spring Starter Project Dependencies ์ค์ ์คํ๋ง ๋ถํธ์์ ํน์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด ํ์ํ ๋ผ์ด๋ธ.. 2022. 3. 8. JPA, Hibernate ORM (Object Relational Mapping) ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ๋งคํํ๋ค๋ ์๋ฏธ์ด๋ค. ๊ฐ์ฒด๋ ๊ฐ์ฒด๋๋ก, ๊ด๊ณํ DB๋ ๊ด๊ณํ DB๋๋ก ์ค๊ณ ORM ํ๋ ์์ํฌ๊ฐ ์ค๊ฐ์์ ๋งคํ(์ฐ๊ฒฐ) ๊ฐ์ฒด๋ฅผ ๊ด๊ณํ DB ํ ์ด๋ธ์ ์๋์ผ๋ก ์์ํ JPA (Java Persistence API) ์๋ฐ ORM์ ๋ํ API ํ์ค ๋ช ์ธ๋ฅผ ์๋ฏธํ๋ค. JPA๋ ORM์ ์ฌ์ฉํ๊ธฐ ์ํ ์ธํฐํ์ด์ค์ ๋ชจ์์ผ๋ก JPA๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ด๋ฅผ ๊ตฌํํ Hibernate, DataNucleus, EclipseLink ๋ฑ๊ณผ ๊ฐ์ ORM ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. JPA๋ ๋ด๋ถ์ ์ผ๋ก JDBC API๋ฅผ ์ฌ์ฉํ์ฌ SQL์ ์์ฑํ๊ณ ํธ์ถํ๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ JDBC ์ฌ์ด์์ ๋์ํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ง์ JDBC API๋ฅผ ์ฐ์ง .. 2022. 3. 8. Spring Security Spring Security๋? Spring ๊ธฐ๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์(์ธ์ฆ๊ณผ ๊ถํ, ์ธ๊ฐ ๋ฑ)์ ๋ด๋นํ๋ ์คํ๋ง ํ์ ํ๋ ์์ํฌ์ด๋ค. ์ฃผ๋ก ์๋ธ๋ฆฟ ํํฐ์ ์ด๋ค๋ก ๊ตฌ์ฑ๋ ํํฐ ์ฒด์ธ์ผ๋ก ๋์ด์๋ค. ์ฌ์ฉ์์ ์์ฒญ์ ๊ฐ๋ก์ฑ๊ณ Spring Security ํ๋ก์ธ์ค์ ๋ณด์ ์ฒ๋ฆฌ๋ฅผ ์์ํ๋ ์ผ๋ จ์ ๊ณผ์ ์ ์๋ฏธํ๋ค. ์ธ์ฆ ์ ์ฐจ๋ฅผ ๊ฑฐ์น ํ ์ธ๊ฐ ์ ์ฐจ๋ฅผ ์งํํ๋ฉฐ ์์ด๋(Principal), ๋น๋ฐ๋ฒํธ(Credential)๋ฅผ ์ฌ์ฉํ๋ Credential ๊ธฐ๋ฐ์ ์ธ์ฆ ๋ฐฉ์์ ์ฌ์ฉํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์ฆ ์ ๋ณด๋ ์ธ๋ฉ๋ชจ๋ฆฌ ์ธ์ ์ ์ฅ์์ธ SecurityContextHolder์ ์ธ์ -์ฟ ํค ๋ฐฉ์์ผ๋ก ์ ์ฅ๋๋ค. Security 3.2 ๋ฒ์ ๋ถํฐ๋ xml๋ก ์ค์ ํ์ง ์๊ณ ์๋ฐ bean์ผ๋ก ๊ฐ๋จํ๊ฒ ์ค์ ํ ์ ์๋๋ก ์ง์ํ๋ค. ๐ ์ธ์ฆ(Au.. 2022. 3. 7. WAS ๋์๊ณผ์ / ์๋ธ๋ฆฟ(Servlet) / Servlet ๊ตฌํ / ์๋ธ๋ฆฟ ์ปจํ ์ด๋ ๋ชฉ์ฐจ WAS ๋์ ๊ณผ์ ์๋ธ๋ฆฟ(Servlet) Servlet ๊ตฌํ ๋ฐฉ๋ฒ ์๋ธ๋ฆฟ ์๋ช ์ฃผ๊ธฐ(Servlet LifeCycle) ์๋ธ๋ฆฟ ์ปจํ ์ด๋(Servlet Container) WAS ๋์ ๊ณผ์ ์น ์๋ฒ๋ก๋ถํฐ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์ปจํ ์ด๋๊ฐ web.xml์ ์ฐธ์กฐํ์ฌ Servlet์ ๋ํ Thread๋ฅผ ์์ฑํ๊ณ ์์ฒญ(httpServletRequest) ๋ฐ ์๋ต(httpServletResponse) ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์ ๋ฌํ๋ค. ํธ์ถ๋ ์๋ธ๋ฆฟ์ ์์ ์ ๋ด๋นํ๊ฒ ๋ ์ค๋ ๋๋ ๊ทธ์ ๋ง๋ doGet() ๋๋ doPost() ๋ฉ์๋๋ฅผ ํธ์ถํด ์์ฑ๋ ๋์ ํ์ด์ง๋ฅผ Response ๊ฐ์ฒด์ ๋ด์ ์ปจํ ์ด๋์ ์ ๋ฌํ๋ค. ์ปจํ ์ด๋๋ ์ ๋ฌ ๋ฐ์ Response ๊ฐ์ฒด๋ฅผ HttpResponse ํํ๋ก ๋ฐ๊พธ์ด Web Server์ ์ ๋ฌํ๊ณ ์์ฑ๋.. 2022. 1. 24. ์ด์ 1 ๋ค์