์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Inflearn
- Community-App
- Security
- MySQL
- PROJECT
- Logging
- docker
- kotlin
- log
- Mapping
- BPM
- MVC
- HTTP
- ์์ฒญ
- Firebase
- API
- BBangting
- ๊น์ํ
- springboot
- JPA
- Spring
- ์ฑ๊ฐ๋ฐ
- Today
- Total
yeon's blog
[Spring] Spring? Spring Boot? ๋ณธ๋ฌธ
๐ฑ Spring ๐ฑ
- Java ๊ธฐ๋ฐ์ ํ๋ ์ ์ํฌ
- Java ์ธ์ด์ ํฐ ํน์ง์ธ ๊ฐ์ฒด ์งํฅ ์ธ์ด๋ฅผ ์ด๋ฆผ
- ์ฆ, ์คํ๋ง์ ์ข์ ๊ฐ์ฒด ์งํฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๊ฒ ๋์์ฃผ๋ ํ๋ ์์ํฌ

๐ฑ Spring Framework ํน์ง ๐ฑ
1. ์ ์ด์ ์ญ์ (IoC, Invertion of Control)
์ ์ด์ ์ญ์ : ๊ฐ์ฒด์ ์ ์ด๊ถ์ ํ๋ ์์ํฌ์ ์ปจํ
์ด๋์๊ฒ ๋๊ธฐ๋ ๊ฒ
์คํ๋ง ์ปจํ
์ด๋์ Bean(๊ฐ์ฒด) ๋ฑ๋ก์, ์คํ๋ง ์ปจํ
์ด๋์์ ๊ฐ์ฒด์ ๋ผ์ดํ ์ฌ์ดํด(์์ฑ, ์๋ฉธ)์ ์ปจํธ๋กค ํด์ค๋ค.
์ฆ, ๊ฐ์ฒด์ ๋ํ ์ ์ด๊ถ์ด ์คํ๋ง ์ปจํ
์ด๋๋ก ์ญ์ ๋๋ ๊ฒ!
2. ์์กด์ฑ ์ฃผ์ (DI, Dependency Injection)
์์กด์ฑ ์ฃผ์
: ํด๋์ค๊ฐ ์์กด์ฑ์ ํด๋์ค ์ธ๋ถ์์ ์ฃผ์
ํ๋ ๊ฒ
Spring์๋ DI ์ปจํ
์ด๋๊ฐ ์กด์ฌํ์ฌ, ๊ฐ์ฒด๋ค ๊ฐ์ ์์กด ๊ด๊ณ๋ฅผ ์ฃผ์
ํด์ค๋ค.
DI ์ด์ฉํ์ฌ ์ฌ์ฌ์ฉ์ฑ์ ๋์ฌ์ฃผ๊ณ , ๋ชจ๋๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ์ ์๋ค.
3. ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ(AOP, Aspect-Oriented-Programming)
AOP: ํ๋ก๊ทธ๋จ์ ํต์ฌ ๋ก์ง ์ธ์ ๋ถ๊ฐ์ ์ธ ๊ด์ฌ์ฌ๋ฅผ ๋ชจ๋ํํ๋ ๊ฒ
-> ์ด๋ฅผ ํตํด ์ฌ๋ฌ ๊ฐ์ฒด์ ๊ณตํต์ผ๋ก ์ ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ตฌ๋ถํจ์ผ๋ก์จ ์ฌ์ฌ์ฉ์ฑ์ ๋์ฌ์ค๋ค.
๐ฑ Spring Boot ๐ฑ
- Spring์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํด์ฃผ๋ ํ๋ ์์ํฌ
- ๋จ๋ ์ผ๋ก ์คํํ ์ ์๋ ์คํ๋ง ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ์์ฑ
- Tomcat / Jetty ๊ฐ์ servlet container๋ฅผ ์์ฒด์ ์ผ๋ก ๋ด์ฅ
- ์์ฌ์ด ๋น๋ ๊ตฌ์ฑ์ ์ํ starter ์ข ์์ฑ ์ ๊ณต
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์๋๊ด๋ฆฌ
- ๊ด๋ก์ ์ํ ๊ฐ๊ฒฐํ ์ค์
๐ฑ Spring ์น ๊ณ์ธต ๊ตฌ์กฐ ๐ฑ
1. Web Layer
์ธ๋ถ ์์ฒญ๊ณผ ์๋ต์ ๋ํ ์ ๋ฐ์ ์ธ ์์ญ์ผ๋ก, ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ ํ์ง ์๊ณ ์๋น์ค์๊ฒ ์์ฒญ์ ๋ณด๋ธ๋ค.
๋ฐ์ดํฐ ์ ์ก ๊ฐ์ฒด๋ง ์ฒ๋ฆฌํด์ผ ํ๋ค.
- ํํ ์ฌ์ฉํ๋ ์ปจํธ๋กค๋ฌ (@Controller)์ JSP/Freemarker ๋ฑ์ ๋ทฐ ํ ํ๋ฆฟ ์์ญ
- ์ด์ธ์ ํํฐ(@Filter), ์ธํฐ์ ํฐ, ์ปจํธ๋กค๋ฌ ์ด๋๋ฐ์ด์ค(@Controller Advice)๋ฑ ํฌํจ
2. Service Layer
ํธ๋์ญ์ (Transaction)์ ๋ํ ๊ฒฝ๊ณ ์ญํ ๋ก, ๋ฐ์ดํฐ ์ ์ก ๊ฐ์ฒด๋ฅผ ๋ฉ์๋์ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ๋ค.
๋๋ฉ์ธ ๊ฐ์ฒด๋ฅผ ์ฒ๋ฆฌํ๊ณ , ๋ฐ์ดํฐ ์ ์ก ๊ฐ์ฒด๋ง Web Layer๋ก ๋ฐํํ ์ ์๋ค.
- @Service์ ์ฌ์ฉ๋๋ ์๋น์ค ์์ญ
- Controller์ Dao ์ค๊ฐ ์์ญ์์ ์ฌ์ฉ
- @Transactional์ด ์ฌ์ฉ๋์ด์ผ ํ๋ ์์ญ์ด๊ธฐ๋ ํจ
3. Repository Layer
๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง ๊ณ์ธต๊ณผ ํต์ ํ๋ ์ญํ ๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ๋ฐ์ดํฐ ์ ์ฅ์(repository)์ ์ ๊ทผํ๋ ์ญํ ์ด๋ค.
์ํฐํฐ ๋ฉ์๋๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๊ฐ์ ธ์ฌ ์ ์๊ณ , ์ํฐํฐ๋ฅผ ๋ฆฌํดํ๋ค.
- Database์ ๊ฐ์ด ๋ฐ์ดํฐ ์ ์ฅ์์ ์ ๊ทผํ๋ ์์ญ
- Entity์ ์์์ฑ์ ๊ด์ฅํ๋ ์ญํ
- Dao(Data Access Object) ์์ญ๊ณผ ๊ฐ์ ์๋ฏธ
4. DTOs
๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ปจํ ์ด๋์ด๋ค. ์ฆ, Data Transfer Object๋ก, ๋ค๋ฅธ ๊ณ์ธต ๊ฐ ๊ตํ์ ์ํ ๊ฐ์ฒด์ด๋ค.
- ๋ทฐ ํ ํ๋ฆฟ ์์ง์์ ์ฌ์ฉ๋ ๊ฐ์ฒด, Repository Layer์์ ๊ฒฐ๊ณผ๋ก ๋๊ฒจ ์ค ๊ฐ์ฒด ๋ฑ
5. Domain Model
Domain์ ๋ชจ๋ ์ฌ๋์ด ๋์ผํ ๊ด์ ์์ ์ดํด, ๊ณต์ ํ ์ ์๋๋ก ๋จ์ํ ์ํจ ๊ฒ์ด๋ค.
Domain: ์ ์ฒด ๋ผ์ดํ ์ฌ์ดํด ๋์ ๋ณ๊ฒฝ๋์ง ์๋ ๊ฐ์ฒด
-> Value Object(VO: DTO์ ๋์ผํ ๊ฐ๋ ์ด๋ readonly ์์ฑ์ ๊ฐ์ง)๋ก, ์์ฑ์ด๋ ์ฌ๋ฌผ์ ์ค๋ช ํ๋ค.
References
'Spring > Spring ๊ฐ๋ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] Spring Security ์ฒ๋ฆฌ ๊ณผ์ (0) | 2023.12.12 |
---|---|
[Spring] Spring Security ๊ฐ๋ (0) | 2023.12.12 |
[Spring] ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ ์ค๊ณ (0) | 2023.12.12 |
[Spring] ์คํ๋ง ์ปจํ ์ด๋ (0) | 2023.11.30 |
[Spring] Annotation? (0) | 2023.11.30 |