Spring Framework1(๊ฐ๋
๐ก)
๐์คํ๋ง ํ๋ ์ ์ํฌ vs ์ ์์ ๋ณด ํ์ค ํ๋ ์ ์ํฌ vs ์คํ๋ง ๋ถํธ
๐์คํ๋ง ํ๋ ์์ํฌ(Spring Framework)
- ์์กด์ฑ ์ค์ ์ ํ ๋ ์ค์ ํ์ผ์ด ๋งค์ฐ ๊ธธ๋ฉฐ, ๋ชจ๋ ์์กด์ฑ์ ๋ํ ๋ฒ์ ๊ด๋ฆฌ ๋ํ ํ๋ํ๋ ํด์ฃผ์ด์ผ ํ๋ค.
- ์๋ฐ ํ๋ซํผ์ ์ํ ์คํ ์์ค ์ ํ๋ฆฌ์ผ์ด์
ํ๋ ์์ํฌ๋ก ๊ฐ๊ฐํ ์คํ๋ง(spring)์ด๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
- ๋์ ์ธ ์น ์ฌ์ดํธ๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํ ์ฌ๋ฌ๊ฐ์ง ์๋น์ค ์ ๊ณต
- ์ ์์ ๋ถ ํ์ค ํ๋ ์์ํฌ์ ๊ธฐ๋ฐ ๊ธฐ์ ๋ก ์ฌ์ฉ๋๊ณ ์๋ค.
- ์ฅ์ : IoC(์ ์ด ์ญํ), Di(์์กด์ฑ ์ฃผ์
), AOP(๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ), ๊ฒฝ๋ ์ปจํ
์ด๋
๐์ ์์ ๋ณด ํ์ค ํ๋ ์ ์ํฌ
- ๊ณต๊ณต๊ธฐ๊ด, ๋๋ผ์์ ๋ฐ๊ณ ์๋ ๊ฒ(์คํ๋ง ํ๋ ์ ์ํฌ๋ ๊ฐ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.)
๐์คํ๋ง ๋ถํธ(Spring Boot)
- ์์กด์ฑ์ ์คํ๋ง์ ๋ณด๋ค ์ฝ๊ฒ ์ค์ ์ด ๊ฐ๋ฅํ๊ณ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์๋์ผ๋ก ํด์ค๋ค. (์คํ๋ง์ ๋ ์ฝ๊ฒ ์ด์ฉํ๊ธฐ ์ํ ๋๊ตฌ)
- ์คํ๋ง ํ๋ ์์ํฌ๋ ๊ธฐ๋ฅ์ด ๋ง์ ๋์ ํ๊ฒฝ์ค์ ์ด ๋ณต์กํ๋ค๋ ๋จ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด ๋์๋ค.
- ์ค์ ์ ์์ด ๋ง์ ๋ถ๋ถ์ ์๋ํ ํ์ฌ ์ฌ์ฉ์ ํธ์์ฑ์ ๋์๋ค.
- ์คํ๋ง ๋ถํธ starter ์์กด์ฑ๋ง ์ถ๊ฐํ๋ฉด ๋ฐ๋ก API๋ฅผ ์ ์ ํ๊ณ , ๋ด์ฅ๋ ํฐ์บฃ ๋๋ ์ ํฐ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๋ฅผ ์คํํ ์ ์๋ค.
(starter๋ maven ๋๋ gradle์ ํ์ํ ์์กด์ฑ์ ์ฃผ์
ํ๋ฉด ์คํ๋ง ๋ถํธ๊ฐ ์์์ ๊ทธ์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์์์ ๋ฐ์์จ๋ค.)
- ์คํํ๊ฒฝ, ์์กด์ฑ ๊ด๋ฆฌ๋ฑ์ ์ธํ๋ผ ๊ด๋ จ ๋ฑ์ ์ ๊ฒฝ ์ฐ์ง ์๊ณ ๋ฐ๋ก ์ฝ๋ฉ์ ์์ํ๋ฉด ๋๋ค.
๐ํ๋ ์ ์ํฌ์ ์คํ๋ง ๋ถํธ ์ฐจ์ด์
- 3๋ฒ์ (ํ๋ ์์ํฌ) , 4๋ฒ์ (์คํ๋ง ๋ถํธ) == ์ฝ๊ฒ ๋ฒ์ ์ฐจ์ด๋ผ๊ณ ์๊ฐ
- spring boot์ ๊ฒฝ์ฐ Embed Tomcat์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก Tomcat์ ์ค์นํ๊ฑฐ๋ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ ํ์๊ฐ ์๋ค.
- spring boot๋ starter์ ํตํด dependecy์๋ํ(spring framework์์๋ ๊ฐ๊ฐ์ dependency๋ค์ ํธํ๋๋ ๋ฒ์ ์ ์ผ์ผ์ด ๋ง์ถ์ด ์ฃผ์ด์ผ ํ๋ค)
- spring boot๋ Xml์ค์ ์ ํ์ง ์์๋ ๋๋ค.
- spring boot๋ jar file์ ์ด์ฉํด ์๋ฐ ์ต์
๋ง์ผ๋ก ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋ค.
๐Spring Framework๋ฅผ ์ดํดํ๊ธฐ ์ ์ ์๊ณ ๊ฐ๊ธฐ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋โ
- ์ด๋ฏธ ์์ฑํด ๋์ ์์ค์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์์ ์ฌ์ฉํ๋ ๊ฒ.
- ํน์ ๊ธฐ๋ฅ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์์ ์ฌ์ฉํ๋ ๊ฒ.
API๋โ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๋ชจ์ฌ ์๋ ๊ฒ.
ํ๋ ์์ํฌ๋โ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฉ์น๊ฐ ์ปค์ง๋ฉด ํ๋ ์์ํฌ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ์์
์ ํ ๋ ์ง์ฌ์ง ํ์์ ์์
์ ํ๋ ๊ฒ
- ex. ์๋์ฐจ๋ฅผ ๋ง๋ค๋ ์ฒ์ ๋ถํฐ ๋ง๋ค๊ธฐ ์ํด์๋ ์ฅ๋น, ๋๊ตฌ(๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ค์ด ํ์ํ๋ค.
- ex. ์ฌ๋ฌ ์ฌ๋์ด ๊ฐ์ ์๋์ฐจ๋ฅผ ๋ง๋ค ๊ฒฝ์ฐ ๋ค๋ฅธ ๊ฒฐ๊ณผ, ํ์ง์ด ๋ฐ์ํ๋ค. โถ๏ธ ์ฌ๋ฌ ๊ธฐ์ ์ ์๊ฒ ๊ฐ์ ์๋์ฐจ ์ธํ์ ์ค๋ค(ํ๋ ์ ์ํฌ) โถ๏ธ ๋ด๋ถ์ ๋ค์ด๊ฐ๋ ๊ฒ์ ๋ํ ์ง์๋ฅผ ๋ด๋ฆฐ๋ค.
- ํ๋ ์ ์ํฌ๋ฅผ ๊ณต๋ถ ํด์ผ ์ด๋ค ๊ธฐ๋ฅ์ ์์ ํ๊ณ ๋นผ๊ณ ํ๋ ๊ธฐ๋ฅ์ ํ ์ ์๋ค.
- ๋๊ฐ์ ํ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๋ชจ์ฌ์๋ ๊ฒ์ ์ ๊ณตํด์ฃผ๋ ๊ฒ์ด ํ๋ ์ ์ํฌ๋ค.(์ฌ๋ฌ ๊ฐ๋ฐ์์ ๊ฒฐ๊ณผ๋ฌผ์ด ๊ฐ๊ฒ ๋์ค๋๋ก, ์ค๋ ฅ ์ฐจ์ด๋ฅผ ์ค์ด๊ธฐ ์ํด ์์ ๋์๋ค.)
- ๋ผ๋, ๊ทผ๊ฐ์ ์ด๋ฃจ๋ ์ฝ๋๋ค์ ๋ฌถ์.
- ๊ฐ๋ฐ์๋ ๊ฐ ๊ฐ๊ฐ์ธ์ ๋ฅ๋ ฅ์ฐจ์ด๊ฐ ํฐ ์ง์
, ๊ฐ๋ฐ์ ๊ตฌ์ฑ์ ๋ฐ๋ผ ํ๋ก์ ํธ ๊ฒฐ๊ณผ ์ญ์ ํฐ ์ฐจ์ด๋ฅผ ๋ณ๋๋ค โถ๏ธ ๊ทน๋ณตํ๊ธฐ ์ํ ๊ฒฐ๊ณผ๋ฌผ์ด ํ๋ ์ ์ํฌ
- ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ ํ๋ฆ์ด๋ ๊ตฌ์กฐ๋ฅผ ์ ํ๊ณ ๋ชจ๋ ํ์์ด ์ด ๊ตฌ์กฐ์ ์์ ์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐ
- ์ฅ์ : ๊ฐ๋ฐ์ ํ์ํ ๊ตฌ์กฐ๋ฅผ ์ด๋ฏธ ์ฝ๋๋ก ๋ง๋ค์ด ๋์๊ธฐ ๋๋ฌธ์ ์ค๋ ฅ์ด ๋ถ์กฑํ ๊ฐ๋ฐ์๋ผ๋ ๋ฐ์ฏค ์์ฑํ ์ํ์์ ํ์ํ ๋ถ๋ถ์ ์กฐ๋ฆฝํ๋ ํํ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค. ํ๋ ์ ์ํฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ผ์ ํ ํ์ง์ด ๋ณด์ฅ ๋๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ป์ ์ ์๊ณ , ๊ฐ๋ฐ์ ์
์ฅ์์๋ ์์ฑ๋ ๊ตฌ์กฐ ์์ ์์ ์ ๋งก์ ์ฝ๋๋ฅผ ๊ฐ๋ฐํด์ ๋ฃ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ์๊ฐ ๋จ์ถ์ด ๊ฐ๋ฅ ํ๋ค.
- ์ด๋ฏธ ์ ํด์ ธ ์๋ ๊ฒ์ด ํ๋ ์ ์ํฌ๋ผ๊ณ ์๊ฐํ๋ฉด ํธํ๋ค.(ex. Java์ collection, Mybatis(ํ๊ทธ๋ค์ด ์ ํด์ ธ ์๋ค.) โถ๏ธ ์ผ์ข
์ ํ๋ ์์ํฌ๋ผ๊ณ ํ ์ ์๋ค. )
๐SpringFramework
- ๊ธฐ์กด์ ํ๋ ์์ํฌ๋ ์์ฒญ๋ ์ฝ๋๋ค์ด ๋ค์ด๊ฐ ์์ด ๋ฉ์น๊ฐ ์ปธ๋ค --> ์๋๊ฐ ๋๋ฆฌ๋ค, ๋ฌด๊ฒ๋ค, ์ฌ์ฉ์์ ์ ํ๊ถ์ด ์ ๋ค.
- ์์ ๋จ์ ์ ๋ณด์ํ๊ณ ํ์ํ ์ฝ๋๋ค๋ง ๋ง๋ค์ด ๋ฃ๊ณ ์ถ๊ฐ ์ ์ผ๋ก ํ์ํ๋ฉด ๋ถ์ฌ์ ์ฌ์ฉํ๋ฉฐ ๋ค๋ฅธ ํ๋ ์ ์ํฌ์ ํธํ์ด ๊ฐ๋ฅํ๋๋ก ๋ง๋ค์ด ์ก๋ค.
- ๊ฒฝ๋ ํ๋ ์ ์ํฌ ์ด๋ค.
- ์์ ํ๋ ์์ํฌ๋ ๋ค์ํ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ฐ์ง๋๋ก ๋ง๋ค๋ค ๋ณด๋ ํ๋์ ๊ธฐ๋ฅ์ ์ํด ๋ง์ ๊ตฌ์กฐ๊ฐ ํ์, ๊ธฐ์ ์ด ๋๋ฌด ์ด๋ ต๊ณ ๋ฐฉ๋ํ๊ธฐ์ ๊ฐ๋ฐ์๊ฐ ์ ์ฒด๋ฅผ ์ดํดํ๊ณ ์ฌ์ฉํ๊ธฐ๊ฐ ์ด๋ ต๋ค.
- ํน์ ๊ธฐ๋ฅ ์์ฃผ๋ก ๊ฐ๋จํ JARํ์ผ ๋ฑ์ ์ด์ฉํด์ ๋ชจ๋ ๊ฐ๋ฐ์ด ๊ฐ๋ฅ ํ๋๋ก ๊ณ ์ฑ ๋์ด ์๋ค.