@Autowired๋ฅผ ์ด์ฉํ๋ฉด xml์์ ๋น์ ์ง์ ์ค์ ํ ํ์์์ด, ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์์์ ์ํ๋ ํด๋์ค๋ฅผ ์ฃผ์ ์์ผ์ค๋๋ค. ๊ทธ๋ผ ๋ฐ๋ก ์์๋ฅผ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค. l ์์ package com.spring.ex02; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import o..
@RequestParam ์ ๋ํ ์ด์ ์ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ป๋ ๋ฐฉ๋ฒ์ ๋๋ค. l ์์ ๋ค์๊ณผ ๊ฐ์ view์์ ์์ด๋๋ฅผ kbj, ์ด๋ฆ์ ๊น๋ณ์ค์ผ๋ก ์ ๋ ฅํ๊ณ ์ ์กํฉ๋๋ค. package com.spring.ex02; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.spri..
์คํ๋ง์ ๊ธฐ๋ฅ๋ค์ค ํ๋์ธ DI์ AOP๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ฐ๋ก XML ํ์ผ์์ ์ค์ ์ ํด์ผํ์ต๋๋ค. ํ์ง๋ง XMLํ์ผ์ ์ด๋ฌํ ์ค์ ๋ค์ ํ๊ธฐ์ ๋๋ฌด๋ ๋ณต์กํ๊ณ ์ด๋ ค์ ์ต๋๋ค. ๋ฐ๋ผ์ ์คํ๋ง์์๋ DI ๊ฐ์ ์๋ฐ ์ฝ๋์ ๊ด๋ จ๋ ์ค์ ์ ์ฝ๋์์ ์ง์ ํ ์ ์๋๋ก ํ์ต๋๋ค. ๊ทธ ๊ธฐ๋ฅ์ ์ ๋ํ ์ด์ (Annotation)์ด๋ผ๊ณ ํฉ๋๋ค. ํ์ฌ ์คํ๋ง์์๋ XMLํ์ผ ์ง์ ์ค์ ๊ณผ ์ ๋ํ ์ด์ 2๊ฐ๋ฅผ ํผํฉํด์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. l ์คํ๋ง ์ ๋ํ ์ด์ ์ ๊ณต ํด๋์ค ์ ๋ํ ์ด์ ์ ์ด์ฉํ๋ ค๋ฉด XML ํ์ผ์์ ๋ค์ 2๊ฐ์ ํด๋์ค๋ฅผ ๋น์ผ๋ก ์ค์ ํด์ฃผ์ด์ผ ํฉ๋๋ค. ํด๋์ค ๊ธฐ๋ฅ DefaultAnnotationHandlerMapping ํด๋์ค ๋ ๋ฒจ์์ @RequestMapping์ ์ฒ๋ฆฌํฉ๋๋ค. AnnotationMethodHandlerMappin..
๋ง์ด๋ฐํฐ์ค์์๋ ๋ฌธ๊ณผ ๋ฌธ์ ์ด์ฉํ์ฌ sql๋ฌธ์ ์ฌ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค. l ๊ณผ AND NAME LIKE '%์ง%' SELECT * FROM TEST_TABLE WHERE 1=1 ํ๊ทธ๋ฅผ ์ด์ฉํ์ฌ ๋ง๋ sql๋ฌธ์ ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ sql๋ฌธ์ ์ฒ๋ฆฌํ๊ธฐ์ ์ ํฉํฉ๋๋ค. SELECT * FROM TEST_TABLE WHERE 1=1 AND NAME LIKE '%์ง%'; '์ง'๊ฐ ๋ค์ด๊ฐ๋ NAME์ ์ฐพ๋ ๊ตฌ๋ฌธ์ด๋ฏ๋ก ์ ์ถ๋ ฅ๊ฒฐ๊ณผ์ NAME์ด 'ํ์ง์'์ธ๊ฑธ ์ ์ ์์ต๋๋ค. ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ง๋ฌธ์ ์ธ์ ๋ ํ์ํฉ๋๋ค. "๋ ๋ฐ๋์ ๋ฐฑ์๋ ์์ด ๋ ๊ฑฐ์ผ"
foreach ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ฉด SQL๋ฌธ์์ ํ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ํ๊ทธ์ ์ฌ๋ฌ๊ฐ์ง ์์ฑ ์์ฑ ์ค๋ช collection array์ list ์ธ์คํด์ค๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค. list ์์๋ list๋ก ํ์ํ๊ณ array ์์๋ array๋ก ํ์ํฉ๋๋ค. index foreach๋ฌธ์ด ๋ฐ๋ณต๋ ๋๋ง๋ค 1์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ์ ๊ทผํ๋ ๊ฐ์ ์์น๋ฅผ ๋ํ๋ ๋๋ค. item collection์ ์์ฑ์ ์ง์ ๋ ๊ฐ์ ์ ๊ทผํฉ๋๋ค. ์ฆ, ์์ฑ ์ด๋ฆ์ด๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค. open ํด๋น ๊ตฌ๋ฌธ์ด ์์๋ ๋์ ์ง์ ํ ๊ธฐํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค. close ํด๋น ๊ตฌ๋ฌธ์ด ๋๋ ๋์ ์ง์ ํ ๊ธฐํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค. separator ๋ฐ๋ณต๋๋ ์ฟผ๋ฆฌ๋ฌธ ์ฌ์ด์ ์ง์ ํ ๊ธฐํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค. l ์์ SELECT * FROM TEST_TABLE ..
ํ๊ทธ๋ switch๋ฌธ๊ณผ ๋น์ทํ ์ญํ ์ ํฉ๋๋ค. l ํ๊ทธ SELECT * FROM TEST_TABLE WHERE 1=1 AND NAME=#{name} AND ID=#{id} AND NAME='ํ์ง์' AND ID='ํ์ง์' switch์ case ๋ฌธ์ฒ๋ผ choose๋ฌธ์์๋ when ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์กฐ๊ฑด์์๋ ํญ์ test๋ฅผ ๋ถ์ฌ์ค์ผ ํฉ๋๋ค. ์ ์ฝ๋์์๋ ๋ง์ฝ name, id๊ฐ ์์ผ๋ฉด ์ฒซ๋ฒ์งธ when์ด, name๋ง ์์ผ๋ฉด ๋๋ฒ์งธ when์ด, id๋ง ์์ผ๋ฉด ์ธ๋ฒ์งธ when ์คํ๋๋ ์ฝ๋์ ๋๋ค. public MemberVO selectIF() { sqlMapper = getInstance(); SqlSession session = sqlMapper.openSession(); MemberVO mem..
๋ง์ด๋ฐํฐ์ค์์๋ ๋์ ์ฒ๋ฆฌ๋ฅผ ํ๊ฒ ํด์ฃผ๋ ์ฌ๋ฌ ๊ฐ์ง์ ํ๊ทธ๋ค์ด ์๋๋ฐ, ์ด๋ฒ ๊ธ์์ ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. l if๋ฌธ์ ๋ค๋ฅธ ์ฝ๋์์์์ if๋ฌธ๊ณผ ์ฌ์ฉ ์ฉ๋๊ฐ ๋น์ทํฉ๋๋ค. ๋ ์ฌ์ฉ๋ฐฉ๋ฒ๋ ์์ฃผ ์ ์ฌํฉ๋๋ค. ์ฃผ์ํ ์ ์ ๋ฐ๋์ ์กฐ๊ฑด๋ฌธ์์ test=""๋ฅผ ์ ์ด์ฃผ์ ์ผ ํฉ๋๋ค. SELECT * FROM TEST_TABLE WHERE 1=1 AND name=#{name} ๋ง์ฝ name์ด๋ผ๋ ๊ฐ์ฒด๊ฐ ์์ผ๋ฉด ํ์ ํ๊ทธ๋ฅผ ์คํํ๊ฒ ๋ฉ๋๋ค. ์๋ค๋ฉด if ํ๊ทธ์ ํ์ ํ๊ทธ๋ ๋ฌด์๋ฉ๋๋ค. public MemberVO selectIF() { sqlMapper = getInstance(); SqlSession session = sqlMapper.openSession(); MemberVO memberVo = new MemberV..
l List ๋ฐ๋ณต๋ฌธ ํฅ์๋ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์๋ฐ์ ์ปฌ๋ ์ ์ธ List๋ฅผ ๋ฐ๋ณต๋ฌธ ํ์ฐ๋ ๋ฐฉ๋ฒ์ ๋๋ค. public void put(String string, List resultList) { for(MemberVO vo : resultList) { System.out.println(vo); } } for(MemberVO vo : resultList) { System.out.println(vo); } ์ฌ๊ธฐ์ List์ ๊ธธ์ด๋ 2์ ๋๋ค. l ์ถ๋ ฅ ๊ฒฐ๊ณผ ํญ์น๋ ๋ฐ๋ณต๋ฌธ์ List ๋ง๊ณ ๋ ArrayList, HashMap, Map ๋ฑ ์๋ฐ์ ๋ค์ํ ์ปฌ๋ ์ ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ง๋ฌธ์ ์ธ์ ๋ ํ์ํฉ๋๋ค. "๋ ๋ฐ๋์ ๋ฐฑ์๋ ์์ด ๋ ๊ฑฐ์ผ"
์ค๋ผํด ํ ์ด๋ธ์ ์กด์ฌํ๋ ๋ ์ฝ๋๋ค์ค ์ต๋ seq๋ฅผ ๊ฐ์ง๋ ๋ ์ฝ๋๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ์๋ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. l ์์ ์๋์ ๊ฐ์ด ๋ฐ์ดํฐ๋ค์ด ์์ต๋๋ค. ๊ฐ์ฅ ํฐ seq์ธ 106์ row๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ์ต๋๋ค. (๋งจ ์ ์ปฌ๋ผ์ด seq์ ๋๋ค.) SELECT ROWNUM, TEMP.* FROM ( SELECT * FROM TABLE_01 WHERE 1=1 ORDER BY SEQ DESC ) TEMP WHERE 1=1 AND ROWNUM = 1 ORDER BY๋ก ์์๋ฅผ ์ ํ ๋ค ROWNUM์ ์ด์ฉํด ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. l ๊ฒฐ๊ณผ ์คํ ๊ฒฐ๊ณผ ์ ๊ฐ์ ธ์จ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ง๋ฌธ์ ์ธ์ ๋ ํ์ํฉ๋๋ค. "๋ ๋ฐ๋์ ๋ฐฑ์๋ ์์ด ๋ ๊ฑฐ์ผ"
๋ง์ด๋ฐํฐ์ค์์ ์ ๊ณตํ๋ SqlSession ํด๋์ค์์๋ CRUD๋ฅผ ์ํ ๋ค์ํ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ํ์ ์ธ select ๊ด๋ จ ๋ฉ์๋๋ ์๋ ํ ์ด๋ธ๊ณผ ๊ฐ์ต๋๋ค. ๋ฉ์๋ ๊ธฐ๋ฅ List selectList(query_id) id์ ๋ํ select๋ฌธ์ ์คํํ ํ ๋ ์ฝ๋๋ฅผ List๋ก ๋ฐํํฉ๋๋ค. List selectList(query_id, '์กฐ๊ฑด') id์ ๋ํ select๋ฌธ์ ์คํํ๋ฉด์ ์กฐ๊ฑด(์ฟผ๋ฆฌ๋ฌธ์์ ์ฌ์ฉํ ์ธ์)๋ฅผ ์ ๋ฌํฉ๋๋ค. T selectOne(query_id) id์ ๋ํ select๋ฌธ์ ์คํํ ํ ํ๊ฐ์ ๋ ์ฝ๋๋ฅผ ์ง์ ํ ํ์ ์ผ๋ก ๋ฐํํฉ๋๋ค. T selectOne(query_id, '์กฐ๊ฑด') id์ ๋ํ select๋ฌธ์ ์คํํ๋ฉด์ ์กฐ๊ฑด(์ฟผ๋ฆฌ๋ฌธ์์ ์ฌ์ฉํ ์ธ์)๋ฅผ ์ ๋ฌํฉ๋๋ค. ์ญ์ ์ดํดํ๋๋ฐ ์์๋ฅผ..
l null null์ ์ด๋ ํ ๊ฐ์ผ๋ก๋ ์ด๊ธฐํ ๋์ง ์๋ ๊ฐ์ ๋๋ค. ํ ๋ฉ๋ชจ๋ฆฌ์ ์์ญ์ด ์กด์ฌํ์ง๋ ์์ฃ . ๋ง์ฝ String str = null; ์ด๋ฐ ์์ผ๋ก ์ ์ธํด์ค๋ค๋ฉด ๋์ค์ ์ฌ์ฉํ๊ฒ ๋ค ์๊ณ ํ ์ํ์ด์ง ์กด์ฌํ๋ ๊ฒ์ ์๋๋๋ค. ์ฌ์ง์ฒ๋ผ ํด์ง๊ฝ๋ ์๋ ์ํ์ด์ฃ . l "" ""์ ํ๋์ String์ ๋๋ค. "str", "strstrstrstr"์ ๊ฐ์ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋์ด ์๋ ์ํ์ ๋๋ค. ์ ์ฌ์ง์์ 0์ด ""์ ๊ฐ๋ค๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. null ๊ณผ ๋ค๋ฅด๊ฒ ํด์ง๊ฝ์ ์์ต๋๋ค. l ์์ฝ null : ์ฌ์ฉํ๊ฒ ๋ค ์๊ณ ํ ์ํ "" : ์ด๋ฏธ ์ฌ์ฉํ ์ํ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ง๋ฌธ์ ์ธ์ ๋ ํ์ํฉ๋๋ค. "๋ ๋ฐ๋์ ๋ฐฑ์๋ ์์ด ๋ ๊ฑฐ์ผ"
๊ฐ๋ฐ์ ํ์ ๋ถ์ด๋ผ๋ฉด ๊ฐํน href="javascript:void(0)"๋ฅผ ๋ณด์ ์ ์ด ์์ ๊ฒ๋๋ค. ์ด๋ ๊ฒ ๋ง์ด์ฃ ๋งํฌ ๋ด๋ถ๋งํฌ๊ฐ ์์นํ a ํ๊ทธ์ ์์ฑ์ผ๋ก ์์ฃผ ๋ณด์ค์ ์์ต๋๋ค. ๊ฐ๋ฐ์ ๋๊ตฌ์ ์ฐ์ด๋ณด๋ฉด undefined๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ ๋ณด์ค์ ์์ต๋๋ค. ๊ทธ๋ผ ๋๋์ฒด ์ด ํจ์๋ ์ด๋์ ์ฌ์ฉํ๋ ๊ฒ์ผ๊น์? l void(0)์ ์ฌ์ฉํ๋ ์ด์ ์ฝ๊ณ ์งง๊ฒ ๋งํ๋ฉด a ํ๊ทธ ๊ฒฝ์ฐ ๋ด๋ถ ๋งํฌ๊ฐ ๊ฑธ๋ ค์๋๋ฐ ์ด ๋งํฌ๊ฐ ์ ์์ ์ผ๋ก ๋์ํ์ง ์๊ฒ๋ ํ๊ธฐ ์ํจ์ ๋๋ค. ๋ง์ฝ a ํ๊ทธ์ ๋ด๋ถ๋งํฌ๊ฐ ๊ฑธ๋ ค ์๋๋ฐ a ํ๊ทธ์์ onclick ์์ฑ์ ๋ถ์ฌํ๊ณ ์ถ์ ๋ ๋ด๋ถ ๋งํฌ๋ฅผ ๋์ํ์ง ์๊ฒ ํ ์ ์์ต๋๋ค. href="" ์ด๋ฐ ์์ผ๋ก uri๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋๋ค ์๊ฐ ํ์ค์๋ ์์ง๋ง ๋ง์ฝ ์ ๋ ๊ฒ ํ ๊ฒฝ์ฐ ์ต์์ ๋งํฌ๋ฅผ ์ด๋ํ๊ฒ ๋ฉ๋..
๋ง์ด๋ฐํฐ์ค๋ ์คํ๋ง์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋์ ๋์์ฃผ๋ ํ๋ ์์ํฌ์ ๋๋ค. ๊ธฐ์กด์๋ JDBC ์ฐ๋ ๊ณผ์ ๋ ๋ณต์กํ๊ณ SQL๋ฌธ์ด ์ฝ๋๋ด์ ์์ฌ ์ฝ๋๊ฐ ์๋นํ ๋ณต์กํด์ก์ต๋๋ค. ๋ ๊ทธ๋ ๋ฏ ํ๋ ์์ํฌ๋ ํธ์๋ฅผ ์ํด ๋ง๋ค์ด์ง๋๋ค. ๋ง์ด๋ฐํฐ์ค๋ ๊ฒฐ๊ตญ ๊ฐ๋ฐ์๋ค์ ํธ์์ฑ์ ์ํ์ฌ ๋ง๋ค์ด์ก์ต๋๋ค. ๋ง์ด๋ฐํฐ์ค์ ํน์ง sql ์คํ ๊ฒฐ๊ณผ๋ฅผ Map ๊ฐ์ฒด์ ๋งคํํด์ค๋๋ค. sql์ ์์ค ์ฝ๋๊ฐ ์๋ XML๋ก ๋ถ๋ฆฌํ์ฌ ์์ฑํฉ๋๋ค. ๋ฐ์ดํฐ์์ค ๊ธฐ๋ฅ๊ณผ ํธ๋์ญ์ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ค๋๋ค. ๊ทธ๋ผ ๊ฐ๋จํ ๋ง์ด๋ฐํฐ์ค๋ฅผ ์ํ ๊ฐ๋ฐํ๊ฒฝ์ ๊ตฌ์ถํ ํ ๊ฐ๋จํ sql๋ฌธ์ ์คํํ์ฌ ๊ฒฐ๊ณผ๊ฐ์ jsp์ ๊ฐ์ ธ์๋ณด๊ฒ ์ต๋๋ค. DBMS๋ ์ค๋ผํด์ ์ฌ์ฉํ์์ต๋๋ค. l ๋ง์ด๋ฐํฐ์ค ์ค์ ์ ์ํ xml ํ์ผ๋ค SqlMapConfig.xml ์ ์ด์ฉํ์ฌ ๋ง์ด๋ฐํฐ์ค ์ค์ ์ ํด์ค๋๋ค..
์คํ๋ง์ ํน์ง์ 5๊ฐ์ง๋ก ๋๋๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋๋ ์ ์์ต๋๋ค. ๊ฒฝ๋ ์ปจํ ์ด๋ DI(Dependency Injection, ์์กด์ฑ ์ฃผ์ ) IoC(์ ์ด์ ์ญํ๋ฆ, Inversion of Control) AOP(๊ด์ ์งํฅํ๋ก๊ทธ๋๋ฐ, Aspect oriented Programming) POJO ๋ฐฉ์์ ํ๋ ์์ํฌ ๊ทธ ์ค ์ด๋ฒ ๊ธ์์๋ AOP(๊ด์ ์งํฅํ๋ก๊ทธ๋๋ฐ)์ ๋ํด ์์๋ณด๋ ค๊ณ ํฉ๋๋ค. l AOP๋ ์ ํ์ํ ๊น? ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๋ค ๋ณด๋ฉด ํดํน์ ๋๋นํ๊ธฐ ์ํ ๋ณด์ ๊ธฐ๋ฅ, ์ฌ์ฉ์์ ์ ์ ๋ด์ญ์ ์ํ ๋ก๊น ๊ธฐ๋ฅ ๊ทธ์ธ์ ํธ๋์ญ์ , ์ด๋ฉ์ผ ๋ฐ์ก ๊ธฐ๋ฅ ๋ฑ ์๋ง์ ๊ธฐ๋ฅ๋ค์ด ์์ต๋๋ค. ์ด๋ค์ ๊ณตํต์ ์ ๋ฌด์์ผ๊น์? ๋ชจ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ๋ ๊ณตํต์ ์ผ๋ก ํ์ํ ๊ธฐ๋ฅ๋ค ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ถ๋ถ์ ํด๋์ค๋ค์ด ์ด๋ฌํ ๊ธฐ๋ฅ..
์๋์ฐจ์์ ๋ง์ฝ ์์ง์ด ์ค๋๋์ ์์ง์ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด, ์๋์ ์ ์ฒด๊ฐ ์๋ ์์ง๋ง ๋ฝ์์ ๋ฐ๊ฟ์ฃผ๋ฉด ๋ฉ๋๋ค. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ํด๋์ค์ ๋ํ ๋ณ๊ฒฝ์ด ํ์ํ๋ฉด ๋ค๋ฅธ ํด๋์ค์ ์ํฅ์ ๋ผ์น์ง ์์ผ๋ฉด์ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์ํฉ์ ๋ ์์ํ๊ฒ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅ์ผ ๋์์ค์ ์๋๋ก ๋์ ๋ ๊ธฐ๋ฅ์ด ๋ฐ๋ก DI(Dependency Injection)์ IoC(Inversion of Control)์ ๋๋ค. ์๋ฐ๋ก ํ๋ก๊ทธ๋๋ฐ์ ํ๋ฉด์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์ง์ ํด๋์ค์ new ์ฐ์ฐ์๋ฅผ ์ด์ฉํ์ฌ ์์ฑํ์ต๋๋ค. ํ์ง๋ง DI๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ฝ๋ฉ์ ํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ, ์ปจํ ์ด๋๊ฐ ์ด๋ฅผ ์์ฑ์์ผ ์ฃผ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๊ฒ ๋๋ค๋ฉด ์ฝ๋์์ ์ง์ ์ ์ธ ์ฐ๊ด ๊ด๊ณ๊ฐ ๋ฐ์ํ์ง ์์ ๊ฐ ํด๋์ค๋ค์ ๋ณ๊ฒฝ์ด ์์ ๋ก์ ์ง๋๋ค...