'Java'์ ๋ํ์ ์ธ ๋ฐฑ์๋ ๊ฐ๋ฐ ํ๋ ์์ํฌ(Framework)์ธ
"spring"๊ณผ "spring boot"
๊ทธ๋์ ๊ทธ๊ฒ ๋ญ ์ฐจ์ด์ธ๊ฑด๋ฐ? ์๋ ์ด๊ธฐ ๋ด ๊ถ๊ธ์ฆ์ ์ํด ์ ๋ฆฌํ๋ ๋ด์ฉ์ด๋ค.
Spring
spring(= spring framework) ์ Java ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ง์ํ๋ ์คํ ์์ค ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ์ด๋ค.
spring ๊ณต์๋ฌธ์์ ๋ฐ๋ฅด๋ฉด,
" the fact that Spring represented a fresh start after the "winter" of traditional J2EE. "
-> ๊ฐ๋ฐ์์๊ฒ ๊ฒจ์ธ์ด ๋๋๊ณ ๋ด์ด ์ฐพ์์๋ค ๋ผ๋ ์๋ฏธ๋ฅผ ๋ด๊ณ ์๋ค๊ณ ํ๋ค. ((((((๊ฝค๋ ๊ท์ฌ์,,,ใ )))))))
์ด ์คํ๋ง์ ์กฐ๊ธ ๋ ์ ๋ฆฌํ์๋ฉด
: ์์ ์๋ฐ ๊ฐ์ฒด์ธ POJO ๋ง์ ์ฌ์ฉํ์ฌ ๋ณต์ก์ฑ์ ์ ๊ฑฐํ๊ณ ๋จ์ํ๊ณ ๊ฐ๋ฒผ์ด ์ฝ๋๋ก ๊ธฐ์ ์ฉ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ๊ฐ๋ฐ๋ ํ๋ ์์ํฌ์ด๋ค.
์ด๋ POJO ๋ Plain Old Java Object ์ ์ฝ์ด๋ก
ํน์ ํ ๊ท์ฝ์ด๋ ํ๋ ์์ํฌ์ ์ข ์๋์ง ์๋ ๊ฐ๋จํ๊ณ ์์ํ ์๋ฐ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค.
๊ฐ์ฒด์งํฅ ๊ฐ๋ฐ์ ์์น์ ์ถฉ์คํ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ฉฐ, ํน์ ํ ์ ์ฝ์ด๋ ์๊ตฌ์ฌํญ์ ์ข ์๋์ง ์๊ณ ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ๋์์ค๋ค.
์ด spring ์ ํน์ง์ ๋ํด ์์๋ณด๋ฉด ํฌ๊ฒ 4๊ฐ์ง ์ ๋๋ก ์ด์ผ๊ธฐ ํ ์ ์๋ค.
Spring ์ ํน์ง
1. ์ ์ด ์ญ์ : IoC ์ปจํ ์ด๋๋ฅผ ์ ๊ณตํ๋ฉฐ, ์คํ๋ง ์ปจํ ์ด๋๊ฐ ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ํ์ํ ์์กด์ฑ์ ์ฃผ์ ํ๋ค.
2. ์์กด์ฑ ์ฃผ์ : ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ์ค์ ํด ์ ์ฐ์ฑ๊ณผ ํ ์คํธ ์ฉ์ด์ฑ์ ํฅ์์ํจ๋ค.
3. AOP ์ง์ (๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ) : ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ(๋ก๊น ์ด๋ ํธ๋์ญ์ ๊ด๋ฆฌ ๋ฑ)์ ๋ถ๋ฆฌํ์ฌ ๋ชจ๋ํ๊ฐ ๊ฐ๋ฅํ๋ค.
4. ์น ๊ฐ๋ฐ ์ง์ : ๋ค์ํ ์น ํ๋ ์ ํ ์ด์ ๊ณ์ธต์ ์ ๊ณตํ๋ฉฐ MVC ์ํคํ ์ฒ์ ์ง์์ผ๋ก ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์น ๊ฐ๋ฐ์ ์ง์ํ๋ค.
ํ์ง๋ง, ์ด Spring Framework๋ ๋ฌธ์ ์ ์ด ๊ฝค ์๋ค.
Spring ์ ๋ฌธ์ ์
spring์
1. ๋ง์ ์ค์ ๊ณผ ๊ตฌ์ฑ์ด ํ์ํด ๋งค์ฐ ๋ณต์กํ๋ค.
2. ํ์ต์ด ํ์ํ ๋ถ๋ถ์ด ๋๋ฌด ๋ง๋ค.
3. ์์กด์ฑ ์ฃผ์ ์ ๊ตฌํํ๊ธฐ ์ํด XML ์ค์ ํ์ผ์ ์๋ง์ ๋น(Bean)์ ๋ฑ๋กํ๋ ๋ฑ ์์กด์ฑ ๊ด๋ฆฌ๊ฐ ์ด๋ ต๋ค.
4. ๋ณ๋์ WAS๋ฅผ ์ค์นํ๊ณ ์ค์ ํด์ฃผ์ด์ผ ํด์ ์๋ฒ ๊ตฌ์ฑ์ด ๋ฒ๊ฑฐ๋กญ๊ณ ์ด๋ ต๋ค.
Spring Boot
์คํ๋ง ๋ถํธ๋ "์คํ๋ง์ ๋ฌธ์ ์ "์ ํด๊ฒฐํด์ฃผ๊ธฐ ์ํด ๊ฐ๋ฐ๋ ํ๋ ์์ํฌ๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
๊ฐ๋จํ ์ค์ ๊ณผ ๊ตฌ์ฑ์ ํตํด ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ์ ๋น ๋ฅด๊ฒ ๋์์ค๋ค.
์ฆ, Spirng Framework์ ์์๋ฒ์ ์ด๋ผ๊ณ ๋ณผ ์๋ ์๋ค.
Spring Boot ํน์ง
spring boot ๋
๊ธฐ๋ณธ์ ์ธ ์ค์ ๊ณผ ๋ณด์ผ๋ฌ ํ๋ ์ดํธ ์ฝ๋(=์ฌ๋ฌ๋ฒ ์ฌ์ฌ์ฉ๋๋ ์ฝ๋)์ ์์ฑ์ ์ต์ํ ์ํค๋ฉฐ,
์๋ ์ค์ ๊ณผ ์ปจ๋ฒค์ ์ ์ง์ํด์ค๋ค.
์ฆ, ๋ด์ฅํ ์๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๋์ ์น ์๋ฒ๋ฅผ ์ค์นํ์ง ์๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ด ๊ฐ๋ฅํ๋ฉฐ,
๋ค์ํ ์คํ๋ง ํ๋ ์์ํฌ ๊ธฐ๋ฅ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ๋ฑ ๊ฐํธํ๊ฒ ๊ตฌ์ฑ์ด ๊ฐ๋ฅํ๋ค.
1. ์์กด์ฑ ๊ด๋ฆฌ ๊ฐ์ํ : ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋ฌถ์ ํจํค์ง๋ฅผ ์ ๊ณตํ๋ฉฐ, ์์กด์ฑ ์ธํธ๋ฅผ ํตํด ๋ฒ์ ์ถฉ๋์ด๋ ๋ณต์กํ ์์กด์ฑ ์ค์ ์ ๋ถ๋ด์ ์ค์ธ๋ค.
2. ๋ด์ฅ ์๋ฒ : ๋ด์ฅ Tomcat, Jetty, Undertow ๋ฑ ๋ด์ฅ๋ ์๋ฒ๋ค์ ์ ๊ณตํ์ฌ ๋ณ๋์ ์๋ฒ ์ค์น์์ด ์คํ ๊ฐ๋ฅํ๋ค.
3. ๊ฐ๊ฒฐํ ์ค์ : ๋ฒ๊ฑฐ๋ก์ด XML ์ค์ ์ด ํ์์์ผ๋ฉฐ, ์ต์ํ์ ์ค์ ์ผ๋ก spring ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด spring boot๋ ์ด๋ค ์ํฉ์ ํ์ฉ์ด ๊ฐ๋ฅํ ๊น?
Spring Boot ์ ํ์ฉ
1. ๋ฐฐ์น ์ฒ๋ฆฌ : ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ์ผ๊ด์์ธ, ์ ๊ธฐ์ ์ธ ์ค์ผ์ค๋ง ์์ ๋ฑ์ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
2. ๋ณด์๊ณผ ์ธ์ฆ : "์คํ๋ง ์ํ๋ฆฌํฐ" ์ ์ ๊ณต์ผ๋ก ์ฌ์ฉ์ ์ธ์ฆ, ๊ถํ ๋ถ์ฌ, ์ธ์ ๊ด๋ฆฌ๋ฑ ๋ณด์๊ณผ ์ธ์ฆ์ ๊ด๋ จ๋ ๊ธฐ๋ฅ์ ๊ฐํธํ๊ฒ ๊ตฌํํ ์ ์๋ค.
3. ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ : ๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ ์ฒ, ์ปจํ ์ด๋ํ, ์ค์ผ์ผ๋ง, ๋ก๊น ๋ฐ ๋ชจ๋ํฐ๋ง ๋ฑ์ ์ง์ํ์ฌ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์์ ๊ฐ๋ฐ๊ณผ ๋ฐฐํฌ๊ฐ ์ฉ์ดํ๋ค.
4. ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ : RESTful API, ์น ์๋น์ค, ๋ง์ดํฌ๋ก ์๋น์ค ๋ฑ ๋ค์ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ฉฐ, ๋ด์ฅ๋ ํฐ์บฃ ์๋ฒ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ธ๋ถ ์๋ฒ์ ๋ฐฐํฌ๋ ๊ฐ๋ฅํ๋ค.
5. ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ก์ธ์ค : JDBC, JPA, Spring Data JPA ๋ฑ์ ํตํด DB ์ก์ธ์ค๊ฐ ๊ฐ๋จํ๋ฉฐ ์ฐ๋์ ํ์ํ ์ค์ ๊ณผ ๊ด๋ จ ์์ ๋ค์ ์๋ํ ์์ผ์ค๋ค.
'๐ฉ๐ปโ๐ป Developer > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ์คํ๋ง์ด ์ฃผ๊ธฐ์ ์ผ๋ก ์์กดํ๋ ๊ฒ์? (0) | 2024.03.23 |
---|---|
[Spring] ์คํ๋ง ๋ถํธ์์ auto-configuration์ ๋นํ์ฑํํ๋ ๋ฐฉ๋ฒ (0) | 2024.03.21 |
[Spring] traceld ์ spanld๋? (0) | 2024.03.20 |
[Spring] ์ด๋ ธํ ์ด์ ์ ์ฉ๋ (0) | 2024.03.19 |
[spring boot] Spring Boot ์์ํ๊ธฐ (0) | 2024.03.02 |
๋๊ธ