IoC
자바는 객체를 생성, 변경 하는 것을 Spring에게 위임 객체 생성의 권한을 프로그램에 준다. 그래서 제어의 역행이라고 한다.
IoC 컨테이너의 역할
객체의 생명주기와 의존성관리
-생명주기 : 생성->초기화->사용->소멸(없앰)
-> 개발자가 할 수 있지만 프로그램이 하게, 그래서 개발시간을 최대한 줄이는 것이 목적
-의존성 : 개발자가 직접 객체를 생성할 수 있지만 해당 권한을 컨테이너에 맡김으로써 소스코드 구현의 시간을 단축
결합도
클래스가 2개가 있음.
한클래스를 갔다가 썼는데 한개를 수정했는데 반대쪽도 에러가남 그럼 둘다 수정해야하는데
둘다 수정해야 사용할 수 있다. -> 둘의 관계가 결합도가 높다고 함.
한쪽 수정하면 반대쪽도 수정해야보니까 할일이 많아진다.
이런 결합도를 낮추는게 목적이고, 최대한 독립적으로 수행되게 하는것
어떻게 하면 개발자가 할 일을 최소화 할 수 있을까가 목적
그래서 Spring은 셋팅이 중요 !
Spring DI종류
1.setter메소드를 통한 의존성 주입
-의존선을 주입받는 setter메소드를 만들고, 이를 통해 의존성을주입
2.생성자를 통한 의존성 주입
-필요한 의존성을 포함하는 클래스에 생성자를 만들고, 이를 통해 의존성을 주입
3.메소드를 통한 의존성 주입
-의존성을 입력받는 일반메소드를 만들고 이를 통해 의존성을 주입