๐ Spring์ ์์กด์ฑ ์ฃผ์ (DI)
@Component
public class Controller{
@Autowired
private Service servic
...
}
- ๋จ์ผ์ฑ
์์ ์์น ์๋ฐํ๊ธฐ ์ฌ์์ง๋ค.
- ์์กด์ฑ์ ์ฃผ์
ํ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์, @Autoqwired์๋์ ๊ฐ์ ์ ํ์์ด ์ถ๊ฐํ ์ ์๋ค.
- ์ด๋, ํ๋์ class๊ฐ ๋ง์ ์ฑ
์์ ๊ฐ๊ณ , ์ํ์ฐธ์กฐ๊ฐ ์ด๋ค์ง ์๋ ์๊ธฐ ๋๋ฌธ์
์์กด์ฑ์ด ๋์์ ธ, ์ฌ์ฉ์ ํผํ๋๊ฒ์ด ์ข๋ค.
@Component
public class Controller{
private Service servic
@Autowired
private void setService(Service servic){
this.service = service;
}
}
์ ํ์ ์ธ ์์กด์ฑ์ ์ฌ์ฉํ ๋ ์ ์ฉํ๋ค. ์คํ๋ง 3.x ์์๋ ์์ ์ ์ฃผ์ ์ ๊ถ์ฅํ๊ณ ์๋ค.
- ์์ ์ ์ฃผ์
์ ์ฌ์ฉํ๊ฒ ๋๋ฉด, service๊ตฌํ์ ๋ฅผ ์ฃผ์
ํ์ง ์์๋
controller๊ฐ์ฒด๋ ์์์ด ๊ฐ๋ฅํ๊ธฐ๋๋ฌธ์ ๋ํฌ์ธํฐ์ต์
์
์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
์ฃผ์
์ด ํ์ํ ๊ฐ์ฒด๊ฐ ์ฃผ์
๋์ง ์์๋ ์ผ๋ง๋ ์ง ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค๋๊ฒ์ด ๋ฌธ์ ๋ค.
@Component
public class Service{
private DAO dao;
//์์ฑ์
@Autowired //์๋ต๊ฐ๋ฅ
public Service(DAO dao){
this.dao = dao;
}
}
@Component
public class Controller{
private final Service servic = new Service( new DAO( ) );
/* Spring์ฌ์ฉ์ */
private final Service service;
// ์์ฑ์ ์ฃผ์
@Autowired
public Controller(Service service) {
this.service = service;
}
}