Spring์ ์ญํ ๋ถ์ฐํ, ๊ธฐ์ ํ ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ ์ํ API ๊ฒฐํฉ๋ ฅ์ ๋ฎ์ถ๋ DI, DB Transaction์ฒ๋ฆฌ ๋ก๊ทธ์ฒ๋ฆฌ MVC๋ฅผ ์ฒ๋ฆฌํ ๋๋ - DI ์ฌ์ฉ (๋์จํ ๊ฒฐํฉ) ํธ๋ ์ญ์ ์ฒ๋ฆฌ๋ - AOP ์ธ์ฆ๊ณผ ๊ถํ ์ฒ๋ฆฌ๋ - Servlet Filter
Service ์์ ์ฌ์ฉํ๋ Dao์ B1 ์ฝ๋๋ฅผ ์์ ํด์ผ ํ๋ ๊ฒฝ์ฐ ์๋กญ๊ฒ B2๋ฅผ ์ถ๊ฐํ ๊ฒ์ธ๊ฐ..??? ํ์ง๋ง ์ด ๋ํ Service์ฝ๋๋ฅผ ์์ ํด์ผ ๋๊ธฐ ๋๋ฌธ์ ์ข์ง ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ธํฐํ์ด์ค๋ฅผ ํ์ฉํ๋ฉด ๋๋ค. ์ธํฐํ์ด์ค๋ฅผ ํ์ฉํ๋ฉด Ser
์คํ๋ง์ด DI๋ฅผ ์ฃผ์ ํ ์ ์๋๋ก xml, annotation์ผ๋ก ์์ฑ์ด ํ์ํ๋ค.Eclipse - help - Marketplace - spring tools ๊ฒ์ ๋ฐ ์ค์น - ์ต์ ๋ค ์ฒดํฌ - ์ค์น์๋ฃ๋น์ค ํ๊ทธ๋ฅผ ํฌํจํ์ฌ ์๋ฐ config๋ฅผ ํตํด์ ์ฌ์ฉ new -
beans ํ๊ทธ๊ฐ ์ฑ์์ ธ์๋ xmlํ์ผ๋ก ์ด๋
ApplicationContext ์์ฑํ๊ธฐ
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ์ฃผ์ ๋ฐฉ๋ฒ์ ๊ฐ์ฒด ๋ช ์ด ์๋๋ผ ํ์ ์ผ๋ก ์ง์ ํด์ค์ผ ํ๋ค.๋ง์ฝ ์ด๋ฆ์ ๋ถ์ฌํ๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ด ํ๋ฉด ๋๋ค.
์ด์ ๊ฐ์ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ์์ฑ์๊ฐ ์์ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํจ์ผ๋ก ์ฃผ์ํด์ผ ํ๋ค.์ด ๊ฒฝ์ฐ์๋ "@Autowired(required = false)" ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ค๋ฅ์์ด ์ฝ๋๋ฅผ ์คํ์ํฌ ์ ์๋ค.
DI๋ฅผ ํ ๋ xml์ ๋์ ํ๋ ์ด๋ ธํ ์ด์ Autowired๋ ๋ญ ๊ธฐ์ค์ผ๋ก ์ฐพ์๊น?์๋ฃํ์ ๊ธฐ์ค์ผ๋ก ์ฐพ๋๋ค. ์ฆ, ์ฐธ์กฐํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ์ฐพ์์ ์๋์ผ๋ก ์ฐพ์์ ๋ฐ์ธ๋ฉ์ ํด์ค๋ค.์ด๊ฒฝ์ฐ id=""๋ฅผ ์ค์ ํด์ฃผ๋ฉด public void setExam(์ฐธ์กฐ๋ช ๋งค๊ฐ๋ณ์๋ช ) ํจ์์
์ด๋ ธํ ์ด์ ์ ์ด์ฉํ์ ๋์ ์ฅ์ ์ด ๊ฒฐํฉ์ํ๋ฅผ ๋์ค์ ๋ฐ๊พธ๊ธฐ ์ํด์ ๊ทธ ๋ถ๋ถ์ xmlํ์ผ ์ค์ ์ผ๋ก ๋ฐ๊พผ ๊ฒ์ด ๊ฒฐํฉ์ํ๋ฅผ ๋์ค์ ๋ฐ๊พธ๊ธฐ ์ํด์ ๊ทธ ๋ถ๋ถ์ xmlํ์ผ ์ค์ ์ผ๋ก ๋ฐ๊พผ ๊ฒB2์์ B3๋ก ๋ฐ๊ฟ์น๊ธฐํ ๋ xmlํ์ผ์ ์ฝ๋๋ฅผ ๋ ์์ ํด์ผ ๋๋ ๋ฒ๊ฑฐ๋ก์์ด ์์๋ฐ๋ผ์,@
ArrayList๋ฅผ xml์์ ์์ฑํ์ฌ ๊ฐ์ ์ด๊ธฐํ ํ ์ ์๋์ง ํด๋ณผ ๊ฒ์ด๋ค.์ด์ฒ๋ผ xml์ ํตํด์ ์ปฌ๋ ์ ๊ฐ์ฒด ์์ฑ์ ์์ฒญํ ์ ์๋ค.
์๋๋ @Component์ ์ธ๋ถํ๋ Annotation๋ค์ด๋ค.Controller์์ ํด๋ผ์ด์ธํธ์ ์๊ตฌ์ฌํญ์ ์ ๋ ฅ๋ฐ๊ณ ์ด๋ฅผ Service์ ์ ๋ฌํ๋ค.Service์์๋ ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ์ ์ฒ๋ฆฌํ ์ ์๋ ์ฝ๋๋ค์ด ํฌํจ๋์ด ์๋ค.(์ ๋ฌด๋จ์, ํธ๋ ์ ์ ๋จ์๋ก ํฌํจ)DAO(
์คํ๋ง์ ์ด์ฉํ ๋ xml๋ก๋ง ํ ๊ฒ์ธ์ง, ์ด๋ ธํ์ด์ ์ผ๋ก๋ง ํ ๊ฒ์ธ์ง ์ ํ๋ ๊ฒ์ด ์ข๋ค.์์ด์ ํ๋ ๊ฒ์ ์ข์ ๋ฐฉ๋ฒ์ด ์๋๋ค.์ค๋์ ์์ํ๊ฒ ์ด๋ ธํ์ด์ ๋ง ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋๋ก ํ์.๊ธฐ์กด ์ฝ๋
๋ก๊ทธ์ฒ๋ฆฌ, ๋ณด์์ฒ๋ฆฌ, ํธ๋์ญ์ ์ฒ๋ฆฌ ๋ฑ์ ํด๋ผ์ด์ธํธ์๊ฒ ํ์ํ ์ ๋ฌด๊ฐ ์๋, ๊ฐ๋ฐ์ ๋๋ ๊ด๋ฆฌ์ ์ ์ฅ์์ ํ์ํ ์ ๋ฌด๋ค์ ์ฃผ ์ ๋ฌด ์์๋์์ ์ฒ๋ฆฌ๋๋ค. ์ ์ฌ์ง์ฒ๋ผ ์ฃผ์ ๋ฌด ์ ์๋(๋ ธ๋์)์์ ๋ณด์กฐ์ ๋ฌด๊ฐ ์ฒ๋ฆฌ๋จํ์ง๋ง, ์ด ๋ฐฉ๋ฒ๋ณด๋ค ๋ ํจ์จ์ ์ผ๋ก ๋ณด์กฐ์ ๋ฌด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด์
Core Concern ์ฃผ์ ๋ฌด ๋ก์งCross-cutting Concern ๋ณด์กฐ์ ๋ฌด ๋ก์ง์ด ์ฝ๋๋ค์ ํ๋ฝ์๋ฅผ ํตํด์ AOP์ ๊ตฌํํ๋ค.ํ๋ฝ์ ํด๋์ค์ ๊ตฌํ๋๋ Cross-cutting Concern๋ผ๊ณ ํ๋ค.์๋๋ ํ๋ก์์ ์์์ด๋ค.ํ๋ฝ์๋ฅผ ์ ์ฉํ ์ฝ๋
AOP ์ฝ๋ ๊ตฌํํ๊ธฐ
BeforeAdvice ๊ตฌํ
After Returning Advice After Throwing Advice
Core Concern์ ์ผ๋ถ๋ถ๋ง Cross-Cutting Concern์ด ์๋ํ๋๋ก ๊ตฌํํ๋ ๊ฒ์ผ๋ถ๋ถ๋ง Cross-Cutting Concern์ด ์๋ํ๋๋ก ํ ๋, ๊ทธ ์ผ๋ถ๋ถ(Core Concern)Cross-cutting Concern ๊ณผ Core Concern์ด