의존성 주입 : 연관 관계를 컨테이너가 직접 규정하는 것
스프링 프레임워크에서는 각 클래스들의 연관 관계를 클래스들 사이에서 맺는 것이 아니라 스프링 프레임워크에서 설정을 통해 맺어줌으로써 클래스들이 연관 관계를 갖지 않게 구현

각각의 클래스가 인터페이스를 구현하는 구조를 이룬다.
만약 개발 중에 MySQL과 연동하는 기능이 생겼다면, 기존의 클래스를 변경하는 것이 아닌 또 다른 구현 클래스를 생성하면 된다. 다음과 같다.

public class BoardServiceImpl implements BoardService {
priavte BoardDAO boardDAO;
public BoardServiceImpl(BoardDAO boardDAO) {
this.boardDAO = boardDAO;
}
// 생성자를 이용한 주입
public class BoardSerivceImple implements BoardService {
private BoardDAO boardDAO;
public void setBoardDAO(BoardDAO boardDAO) {
this.boardDAO = boardDAO;
}
...
// setter를 이용한 주입

스프링에서는 객체를 Object라고 부르지 않고
Bean이라고 부른다. 의존 관계를 설정하는 외부 XML파일에서 각각의 객체를<bean>태그로 표시하기 때문이다.