์ผ๋ฐ์ ์ผ๋ก Spring Boot ํ๋ก์ ํธ์์๋ Repository, Service, Controller ๋ฑ์ ๊ณ์ธต(layer)๋ณ๋ก ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
Repository
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ CRUD(Create, Read, Update, Delete) ๋ก์ง์ ๋ด๋นํ๋ ์ฝ๋๋ฅผ ํ ์คํธํฉ๋๋ค. ๋ณดํต In-Memory DB(์: H2)๋ฅผ ์ด์ฉํด์ ํ ์คํธ๋ฅผ ์ํํฉ๋๋ค.
Service
๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํ๋ ์ฝ๋๋ฅผ ํ ์คํธํฉ๋๋ค. Repository๋ฅผ Mockingํ์ฌ ํ ์คํธ๋ฅผ ์ํํฉ๋๋ค.
Controller
HTTP ์์ฒญ๊ณผ ์๋ต ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ์ฝ๋๋ฅผ ํ ์คํธํฉ๋๋ค. MockMvc๋ฅผ ์ด์ฉํด์ ํ ์คํธ๋ฅผ ์ํํฉ๋๋ค.
๋ํ, Domain์ ์ผ๋ฐ์ ์ผ๋ก ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๊ณ ์๋ ํด๋์ค๋ก, ๋ณ๋์ ํ ์คํธ์ฝ๋๊ฐ ํ์ํ์ง ์์ ์ ์์ต๋๋ค. ํ์ง๋ง, Domain ๊ฐ์ฒด์ ๋ํ ์ ํจ์ฑ ๊ฒ์ฌ ๋ก์ง์ด ์๋ค๋ฉด, ์ด๋ฅผ ํ ์คํธํ๊ธฐ ์ํ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, ๋ชจ๋ ๊ณ์ธต์ ์ฝ๋๋ฅผ ํ ์คํธํ์ง ์์๋ ๋ฉ๋๋ค. ํ์ง๋ง, ์ค์ํ ๋น์ฆ๋์ค ๋ก์ง์ด๋ ์๋ฌ ํธ๋ค๋ง๊ณผ ๊ฐ์ด ํ ์คํธ๊ฐ ํ์์ ์ธ ๋ถ๋ถ์ ๋ํด์๋ ๋ฐ๋์ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ํ ์คํธ ์ฝ๋์ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ์์ธ ์ฒ๋ฆฌ
- ์ ๋ ฅ ๊ฐ์ ๋ํ ๊ฒ์ฆ์ด๋ ์๋ชป๋ ์ ๋ ฅ์ ๋ํ ์์ธ ์ฒ๋ฆฌ๋ฅผ ๋จผ์ ์์ฑํฉ๋๋ค.
2. ๋จ์ ํ ์คํธ
- ๋ชจ๋ ๋๋ ํจ์ ๋จ์์ ํ ์คํธ๋ฅผ ์์ฑํฉ๋๋ค.
- ์ด ๋จ๊ณ์์๋ ๋ชจ๋ ๋๋ ํจ์๊ฐ ์๋ํ ๋๋ก ์๋ํ๋์ง ํ์ธํฉ๋๋ค.
3. ํตํฉ ํ ์คํธ
- ๋จ์ ํ ์คํธ๋ฅผ ํต๊ณผํ ๋ชจ๋์ด๋ ํจ์๋ค์ ํตํฉํ์ฌ ์ ์ฒด ์์คํ ์ ๋์์ ํ ์คํธํฉ๋๋ค.
4. ์์คํ ํ ์คํธ
- ์ ์ฒด ์์คํ ์ ๋์์ผ๋ก ํ๋ ํ ์คํธ๋ฅผ ์ํํฉ๋๋ค.
- ์ฑ๋ฅ, ์์ ์ฑ, ๋ณด์ ๋ฑ ์์คํ ์ ๋ฐ์ ์ธ ๋์์ ๊ฒ์ฆํฉ๋๋ค.
์ด๋ฌํ ์์๋ ํ ์คํธ ์ฝ๋์ ์ ์ง๋ณด์์ ๋๋ฒ๊น ์ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํด ์ผ๋ฐ์ ์ผ๋ก ๋ฐ๋ฅด๋ ๋ฐฉ์์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ ํ๋ก์ ํธ์ ์ํฉ์ ๋ฐ๋ผ ํ ์คํธ ์์๊ฐ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
'๐ Study > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
spring.jpa.hibernate.ddl-auto์ ์ข ๋ฅ ๋ฐ ์ฌ์ฉ๋ฒ (0) | 2023.08.26 |
---|---|
User@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)๊ตณ์ด RANDOM_PORT๋ฅผ ํ๋ ์ด์ (0) | 2023.05.02 |
junit4 ์ junit 5 ์ ์ฐจ์ด์ ๊ณผ ์ฅ๋จ์ ๊ทธ๋ฆฌ๊ณ ๋ญ๋ฅผ ๋๋ง์ด ์ฐ์ด๋์ง? (0) | 2023.05.01 |
Thymeleaf Fragment (Fragment ๋๋๊ธฐ) (0) | 2022.09.06 |
Spring์ด๋? (0) | 2022.08.06 |