Spring๊ณผ SpringBoot์ ์ฐจ์ด์
SpringBoot๋ Spring ํ๋ ์ ์ํฌ ํ๋ก์ ํธ๋ฅผ ๊ฐํธํ๊ฒ ์ธํ ํ ์ ์๊ฒ ํด์ฃผ๋ ์๋ธ ํ๋ก์ ํธ์ด๋ค.
Spring | SpringBoot | |
๋ชฉ์ | ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ์ ๋ ์ฝ๊ฒ | ์คํ๋ง ๊ฐ๋ฐ์ ๋ ์ฝ๊ฒ |
์ค์ ํ์ผ | ๊ฐ๋ฐ์๊ฐ ์๋์ผ๋ก | ์๋ ๊ตฌ์ฑ |
XML | ์ผ๋ถ ํ์ผ์ XML๋ก ์ง์ ์์ฑ ๋ฐ ๊ด๋ฆฌ | ์ฌ์ฉ x |
์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค | ์ง์ํ์ง ์์ | ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ ์ค์ ์ง์ |
์๋ฒ | ํ๋ก์ ํธ๋ฅผ ๋์ฐ๋ ์๋ฒ ๋ณ๋๋ก ์ค์ | ๋ด์ฅํ ์๋ฒ๋ฅผ ์ |
IoC๋?
Inversion of Control์ ์ค์ ํํ์ผ๋ก, ์ ์ด์ ์ญ์ ์ด๋ผ๋ ๋ป์ด๋ค.
๊ฐ์ฒด ์งํฅ ์ค๊ณ์์ ํด๋์ค ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋์จํ๊ธฐ ์ํด ๋ค์ํ ์ข ๋ฅ์ ์ ์ด๋ฅผ ๋ฐ์ ์ํค๋ ๊ฒ์ ์๋ฏธํ๋ค.
๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ ์ด๋์ ๊ฐ์์ ๋ฐ์์์ ์ฌ์ฉํ๋ค. ์คํ๋ง์ ๊ฒฝ์ฐ์๋ ์คํ๋ง ์ปจํ ์ด๋์์ ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌ, ์ ๊ณตํด ์ฃผ๋ ์ญํ ์ ํ๋ค.
DI๋?
Dependency Injection์ ์ค์ ํํ์ผ๋ก, ์์กด ๊ด๊ณ ์ฃผ์ ์ด๋ผ๋ ๋ป์ด๋ค.
DI๋ IoC์ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ ๋ฐฉ๋ฒ ์ค ํ๋์ด๋ค.
DI๋ ์ด๋ค ํด๋์ค๊ฐ ์๋ฅธ ํด๋์ค์ ์์กดํ๋ค๋ ๋ป์ด๋ค. ๊ฐ์ฒด๊ฐ ํ์๋ก ํ๋ ์์กด ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ์ง ์๊ณ , ์ธ๋ถ์์ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ฃผ์ ๋ฐ๋ ๋ฐฉ์์ด๋ค.
Spring์ DI/IoC ์ง์ ๋ฐฉ๋ฒ
์คํ๋ง์ IoC/DI๋ฅผ DI Container๋ก ์ ๊ณตํ๋ค. ํด๋์ค ์ฌ์ด์ ์์กด ๊ด๊ณ๋ฅผ Bean ์ค์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ปจํ ์ด๋๊ฐ ์๋์ผ๋ก ์ฐ๊ฒฐํด ์ฃผ๋ ๋ฐฉ์์ผ๋ก ์ ๊ณตํ๋ค.
Spring Container๋?
์คํ๋ง์ ์คํ๋ง ์ปจํ ์ด๋๋ฅผ ํตํด ๋น์ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ค. ๋น์ด ์์ฑ๋๊ณ ์๋ฉธํ๊ธฐ๊น์ง์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํด ์ค๋ค.
๊ฐ๋ฐ์๊ฐ @Autowired์ ๊ฐ์ ์ ๋ํ ์ด์ ์ ์ฌ์ฉํด ๋น์ ์ฃผ์ ๋ฐ์ ์ ์๊ฒ DI๋ฅผ ์ง์ํ๊ธฐ๋ ํ๋ค.
Bean ๊ฐ์ฒด์ Bean ์๋ช ์ฃผ๊ธฐ?
Bean์ ์คํ๋ง ์ปจํ ์ด๋๊ฐ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค. ์คํ๋ง์ ๋น์ ์ปจํ ์ด๋์ ๋ฑ๋กํ๊ธฐ ์ํด XMLํ์ผ ์ค์ , ์ ๋ํ ์ด์ ์ถ๊ฐ๋ฑ์ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค. Bean์ผ๋ก ๋ฑ๋ก๋ ๊ฐ์ฒด๋ ์ฝ๊ฒ ์ฃผ์ ํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
Bean์ ์๋ช ์ฃผ๊ธฐ๋
์คํ๋ง ์ปจํ ์ด๋ ์คํ -> ์คํ๋ง ๋น ์์ฑ -> ์์กด ๊ด๊ณ ์ฃผ์ -> ์ด๊ธฐํ ์ฝ๋ฐฑ -> ์ฌ์ฉ -> ์๋ฉธ ์ ์ฝ๋ฐฑ -> ์คํ๋ง ์ข ๋ฃ
์ด๋ค.
Annotation์ด๋?
ํ๋ก๊ทธ๋จ์ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๋ฉํ๋ฐ์ดํฐ์ด๋ค. ์ ๋ํ ์ด์ ๊ทธ ์์ฒด๋ก๋ ํน๋ณํ ๊ธฐ๋ฅ์ด ์์ง๋ง reflection์ ์ด์ฉํ๋ฉด ํน์ ์ ๋ํ ์ด์ ์ด ๋จ๊ฒจ์ง ํด๋์ค, ๋ฉ์๋, ํ๋ผ๋ฏธํฐ, ํ๋ ๋ฑ์ ๊ฐ์ ์ฃผ์ ํ๋ค๋์ง ๊ธฐ๋ก์ ๋จ๊ธฐ๋ ๋ฑ์ ์ ๋ฌด๋ฅผ ์ํํ ์ ์๋ค.
Spring์ ๋ํ์ ์ธ Annotation
- @CompenentScan
- @Component, @Service, @Repository, @Controller, @Configuration์ด ๋ถ์ ํด๋์ค Bean์ ์ฐพ์์ Context์ Bean์ ๋ฑ๋กํด ์ฃผ๋ ์ ๋ ธํ ์ด์
- @EnableAutoConfiguration
- ์คํ๋ง์์ ์๋ ๊ตฌ์ฑ์ ํ์ฑํํ๋ ์ ๋ํ ์ด์ . ์๋ฒ๊ฐ ์คํ๋ ๋ ๋ฉํ ํ์ผ์ ์ฝ๊ณ ์ ์๋ ์ค์ ์ ์๋์ผ๋ก ๊ตฌ์ฑํ๋ ์ญํ ์ ํ๋ค. srping.factories์ ์ฌ๋ฌ Configuration๋ค์ด ์๊ณ ์กฐ๊ฑด์ ๋ฐ๋ผ Bean์ด ๋ฑ๋ก๋๋๋ฐ ๋ฉ์ธ ํด๋์ค @SpringBootConfiguration์ ์คํํ๋ฉด @EnableAutoConfiguration์ ์ํด spring.factories์์ ์๋ ์๋์ค์ ๋ค์ด ์กฐ๊ฑด์ ๋ฐ๋ผ ์ ์ฉ๋์ด Bean๋ค์ด ์์ฑ๋จ.
- @Component
- ๊ฐ๋ฐ์๊ฐ ์์ฑํ ํด๋์ค๋ฅผ Bean์ผ๋ก ๋ฑ๋กํ๊ธฐ ์ํ ์ ๋ ธํ ์ด์
- @Bean
๊ฐ๋ฐ์๊ฐ ์ ์ด ๋ถ๊ฐ๋ฅํ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ Bean์ผ๋ก ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ ๋ ธํ ์ด์ - @Configuration
- @Configuration์ ํด๋์ค์ ์ ์ฉํ๊ณ , @Bean์ ํด๋์ค์ ๋ฉ์๋์ ์ ์ฉํ๋ฉด @autowired๋ก Bean์ ๋ถ๋ฅผ ์ ์์.
- @Autowired
- ์คํ๋ง์ด ํ์
์ ๋ง๊ฒ Bean์ ์ฃผ์
ํด ์ค.
ํ์ ์ ํ์ธ ํ ๋ชป ์ฐพ์ผ๋ฉด Name์ ๋ฐ๋ผ ์ฃผ์ ํด ์ค. ๊ฐ์ ๋ก ์ฃผ์ ํ ๋๋ @Qualifier์ ์ฌ์ฉ
- ์คํ๋ง์ด ํ์
์ ๋ง๊ฒ Bean์ ์ฃผ์
ํด ์ค.
- @Qualifier
- ๊ฐ์ ํ์
์ ๋น์ด ๋ ๊ฐ ์ด์ ์กด์ฌํ๋ ๊ฒฝ์ฐ ์คํ๋ง์ด ์ด๋ค ๋น์ ์ฃผ์
ํด์ผ ํ ์ง ์ ์ ์์ด์ ์ด๊ธฐํ ๊ณผ์ ์์ ์์ธ๊ฐ ๋ฐ์ํจ.
@Qualifier์ @Autowired์ ํจ๊ป ์ฌ์ฉํ์ฌ ์ ํ์ด ์ด๋ค ๋น์ ์ฌ์ฉํ ์ง๋ฅผ ์ง์ ํ์ฌ ํน์ ์์กด ๊ฐ์ฒด๋ฅผ ์ฃผ์ ํ ์ ์๋ค.
- ๊ฐ์ ํ์
์ ๋น์ด ๋ ๊ฐ ์ด์ ์กด์ฌํ๋ ๊ฒฝ์ฐ ์คํ๋ง์ด ์ด๋ค ๋น์ ์ฃผ์
ํด์ผ ํ ์ง ์ ์ ์์ด์ ์ด๊ธฐํ ๊ณผ์ ์์ ์์ธ๊ฐ ๋ฐ์ํจ.
- @Resource
- Bean ๊ฐ์ฒด๋ฅผ ์ฃผ์
ํ๋ค.
@AutoWired๋ ํ์ ์ผ๋ก, @Resource๋ ์ด๋ฆ์ผ๋ก ์ฐ๊ฒฐํด ์ค๋ค.
- Bean ๊ฐ์ฒด๋ฅผ ์ฃผ์
ํ๋ค.
- @Controller
- API์ View๋ฅผ ๋์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ
view ํ๋ฉด์ return์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ
- API์ View๋ฅผ ๋์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ
- @RestController
- viewํ์ ์์ด API๋ง ์ง์ํ๋ ์๋น์ค์ ์ฌ์ฉ
- @SpringBootApplication
- @Configuration, @EnableAutoConfiguraton, @ComponentScan 3๊ฐ์ง๋ฅผ ํฉ์น ์ ๋ ธํ ์ด์
- @Service
- ๋น์ฆ๋์ค ๋ก์ง
- @Repository
- ORM ๋งคํ
AOP๋?
AOP๋ Aspect Oridented Programming์ ์ค์๋ง๋ก, ๊ด์ ์งํฅํ ํ๋ก๊ทธ๋๋ฐ์ด๋ผ๋ ์๋ฏธ์ด๋ค.
ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ๊ด์ฌ์ ํต์ฌ ๊ด์ , ๋ถ๊ฐ ๊ด์ ์ผ๋ก ๋๋์ด ๊ด์ฌ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ํ๋ฅผ ํ๋ค.
๋ถ๊ฐ ๊ด์ ์ฝ๋๋ฅผ ํต์ฌ ๊ด์ ์ฝ๋์์ ๋ถ๋ฆฌํด์ ํ๋ก๊ทธ๋๋จธ๊ฐ ํต์ฌ ๊ด์ ์ฝ๋์ ์ง์คํ ์ ์๊ฒ ํ๊ณ , ํ๋ก๊ทธ๋จ ๋ณ๊ฒฝ๊ณผ ํ์ฅ์๋ ์ ์ฐํ๊ฒ ๋์ ๊ฐ๋ฅํ๋ค.
์น์๋ฒ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ์ฐจ์ด
- ์น์๋ฒ : ์ ์ ์ธ ๋ฆฌ์์ค ํ์ผ์ ์ ๊ณตํ๋ค.
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ(WAS) : ์น ์๋ฒ + ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง (DB์ฐ๊ฒฐ, ๋์ ์ํ, ๋ฐ์ดํฐ ์ ๊ณต)๊น์ง ์ ๊ณตํ์ฌ ๋์ ์ธ ์ฒ๋ฆฌ๋ฅผ ํ๋ค.
์คํ๋ง MVC๋?
MVC๋ Model-View-Controller ๊ตฌ์กฐ์ ๋์์ธ ํจํด์ ์๋ฏธํ๋ค. ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ฐ์ ์ง์ค ๊ฐ๋ฅ
- Model
- ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์์ญ. Service์ DAO์์ญ์ผ๋ก ๋๋จ
Model์๋ View์ Controller์ ๋ํ ์ด๋ ํ ์ ๋ณด๋ ๊ฐ์ง๊ณ ์์ด์๋ ์๋จ.
- ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์์ญ. Service์ DAO์์ญ์ผ๋ก ๋๋จ
- View
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ด๋น.
Model์ด ๊ฐ์ง๊ณ ์๋ ์ ๋ณด๋ฅผ ์ ์ฅํด์๋ ์๋๊ณ , Model๊ณผ Controller์ ๊ตฌ์ฑ ์์๋ฅผ ์์์ ์๋๋ค.
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ด๋น.
- Controller
- ์ฌ์ฉ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ Model๊ณผ View๋ฅผ ์ค๊ฐํ๋ ์ญํ
view๋ก ๋ถํฐ ๋ฐ์ ์์ฒญ์ ๊ฐ๊ณตํ์ฌ Model์ ์ ๋ฌ
Model๋ก ๋ถํฐ ๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ View์ ๋๊ฒจ์ฃผ๋ ์ญํ ์ ํจ.
Model๊ณผ View์ ์ ๋ณด๋ฅผ ์๊ณ ์์ด์ผํจ.
- ์ฌ์ฉ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ Model๊ณผ View๋ฅผ ์ค๊ฐํ๋ ์ญํ
ํ๋์ ์ปจํธ๋กค๋ฌ๋ก ์ฌ๋ฌ ์์ฒญ์ ๋ฐ๋ ๋ฐฉ๋ฒ?
์ปจํธ๋กค๋ฌ๋ ์ปดํฌ๋ํธ ์ค์บ์ด ๋๋ฉด์ ์คํ๋ง ๋น ์ปจํ ์ด๋์ ์ฌ๋ผ๊ฐ. ๋น ๊ฐ์ฒด๋ ์ฑ๊ธํค ํจํด์ผ๋ก ๊ตฌํ๋์ด ์์ด ์ฐ๋ ๋ ์์ฒญ์ด ๋ค์ด์๋ ํ๋์ ์ปจํธ๋กค๋ฌ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ๋ฉฐ ์ฒ๋ฆฌํจ.
์ฌ๋ฌ ์ฐ๋ ๋๊ฐ ๋ฉ์๋์ ๋ํด ๊ณต์ ์์์ผ๋ก์จ ์ ๊ทผํด ์ฌ์ฉํจ.
์ฑ๊ธํค ํจํด์ thread-safeํ์ง ์๋ค๋ ์๋ฏธ์ด๋ฏ๋ก, ์ํ๋ฅผ ๊ณต์ ํ๊ฑฐ๋ ์ ์ฅํ๋ ์ฝ๋๊ฐ ์๋๋ก statelessํ๊ฒ ์์ฑํด์ผํจ.
DAO๋?
Data Access Object.
์ค์ DB์ ์ ์ํ๋ ๊ฐ์ฒด. Service์ DB์ฌ์ด์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ ์ํฐํฐ๋ก ๋ณํ์์ผ ๊ฐ์ ธ์จ๋ค.
DB๋ก์ง๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ๊ธฐ ์ํด์ ์ฌ์ฉ
DTO๋?
Data Transfer Object
๊ณ์ธต๊ฐ์ ๋ฐ์ดํฐ ๊ตํ์ ์ํ ๊ฐ์ฒด
๋ก์ง์ ๊ฐ์ง ์๋ ์์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ก getter, setter๋ง ํฌํจ
VO๋?
Value Object
DTO์ ๋์ผํ ๊ฐ๋
Read Only๋ก ์์ ๋ถ๊ฐ
getter, setter ์ด์ธ์ ์ถ๊ฐ ๋ก์ง ํฌํจ ๊ฐ๋ฅ
BO๋?
Bussiness Object
๋น์ฆ๋์ค ๋ก์ง์ ํฌํจํ๋ ์ค๋ธ์ ํธ. ์ฌ๋ฌ DAO๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ
Spring์ ๊ตฌ์กฐ
์คํ๋ง์ ๊ฐ ๋ ์ด์ด๊ฐ ์ ์์ ๋ ์ด์ด์ ํต์ ํ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
ํ๋์ ๋ ์ด์ด๋ ์์ ๊ณ ์ ์ ์ญํ ์ ์ํํ๊ณ , ์ธ์ ํ ๋ ์ด์ด์ ๋ฌด์ธ๊ฐ๋ฅผ ์์ฒญํ๊ฑฐ๋ ์๋ตํจ.
- Presentation Layer
- HTTP ์์ฒญ์ ๋ฐ๊ณ ์ด ์์ฒญ์ ๋น์ฆ๋์ค ๊ณ์ธต์ผ๋ก ์ ์กํ๋ ์ญํ
- Application Layer
- ๋น์ฆ๋์ค ํต์ฌ ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ.
Service๋ผ๋ ๊ฐ์ฒด๋ผ๋ ํ๋์ ํธ๋์ญ์ ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋
- ๋น์ฆ๋์ค ํต์ฌ ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ.
- Persistence Layer
- ๋ฐ์ดํฐ ๊ด๋ จ ์ฒ๋ฆฌ๋ฅผ ๋ด๋น
JPA๋?
Java Persistance API
'๐CS-๋ฉด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ธฐ์ ๋ฉด์ ์ค๋นํ๊ธฐ - ์๋ฃ๊ตฌ์กฐ (0) | 2024.07.31 |
---|---|
๊ธฐ์ ๋ฉด์ ์ค๋นํ๊ธฐ - ์ด์์ฒด์ (0) | 2024.07.31 |
๊ธฐ์ ๋ฉด์ ์ค๋นํ๊ธฐ - ์น / ๋คํธ์ํฌ (0) | 2024.07.29 |
๊ธฐ์ ๋ฉด์ ์ค๋นํ๊ธฐ - ๋ฐ์ดํฐ๋ฒ ์ด์ค (0) | 2024.07.29 |
๊ธฐ์ ๋ฉด์ ์ค๋นํ๊ธฐ - ์๋ฐ (0) | 2024.07.29 |