์ด ํ๋ก์ ํธ๋ FakeStore๋ฅผ ๋ฆฌํฉํ ๋งํ ๋ฐฑ์๋ ํ๋ก์ ํธ์ ๋๋ค.
application.propertiesโapplication.ymlํฌ๋งท์ผ๋ก ๋ณ๊ฒฝํ์ฌ ๊ฐ๋ ์ฑ ํฅ์- Spring Boot 3.1.2 -> 3.4.5, JDK 17 -> 21
docker-compose๋์ ํ์ฌ MariaDB ์ปจํ ์ด๋ ๊ธฐ๋ฐ ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ฑ- Spring Boot ์ด๊ธฐ ์คํ ์
data.sql์ ํตํ ๋ฐ์ดํฐ ์๋ ์ฝ์ ์ค์
- ๊ธฐ์กด ๊ณ์ธต๋ณ ๋จ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ (
controller,service,repository๋ฑ)์์, ๋๋ฉ์ธ ์ค์ฌ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ก ๊ฐํธ- ex)
member/,product/,cart/ํ์์ ๊ฐ๊ฐcontroller,service,dto,domain,repository๋ฐฐ์น
- ex)
โ ์ธ์ฆ ๋ฐ ๋ณด์ ๊ฐ์
- ๊ธฐ์กด JWT ์ธ์ฆ ๋ฐฉ์์ Redis ๊ธฐ๋ฐ ๋ธ๋๋ฆฌ์คํธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ ๋ก๊ทธ์์ ์ ํ ํฐ ๋ฌดํจํ ๊ฐ๋ฅ
- Redis์ ๋ก๊ทธ์์๋ Access Token์ ์ ์ฅํ๊ณ , ๋งค ์์ฒญ๋ง๋ค ํํฐ์์ ๋ธ๋๋ฆฌ์คํธ ํ์ธ
[Client] โ ๋ก๊ทธ์ธ โ [Spring Security] โ JWT ๋ฐ๊ธ
โ
[Client] โ ๋งค ์์ฒญ๋ง๋ค JWT ํฌํจ โ ์ธ์ฆ ํํฐ
โโ Redis ๋ธ๋๋ฆฌ์คํธ ์กฐํ
โ
[์์ผ๋ฉด] โ ๋ค์ ํํฐ
[์์ผ๋ฉด] โ 401 Unauthorized
[Client] โ ๋ก๊ทธ์์ ์์ฒญ โ Redis์ ํ ํฐ ์ ์ฅ (TTL=๋ง๋ฃ๊น์ง ๋จ์ ์๊ฐ)
- Redis๋ฅผ ํ์ฉํ ๋ก๊ทธ์ธ ์๋ ์ ํ ๊ธฐ๋ฅ ์ถ๊ฐ: ํน์ ์ด๋ฉ์ผ ๊ธฐ์ค์ผ๋ก ๋ก๊ทธ์ธ ์คํจ ํ์๋ฅผ ๊ธฐ๋กํ๊ณ , 5ํ ์ด์ ์คํจ ์ 15๋ถ๊ฐ ๋ก๊ทธ์ธ ์ฐจ๋จ
- ์ฌ์ฉํ์ง ์๋ ์ฝ๋ ๋ฐ ์ฃผ์ ์ ๊ฑฐ
- Querydsl ์ฌ์ฉ ๋ฐฉ์์
QuerydslRepositorySupportโJPAQueryFactory์ฃผ์ ๋ฐฉ์์ผ๋ก ์ ํ
- Backend: Java 21, Spring Boot 3.4.5
- DB & ORM: MariaDB, JPA, QueryDSL, Redis
- Security: Spring Security, JWT
- API Docs: Swagger (SpringDoc OpenAPI)