Open gmelon opened 7 months ago
- 저는 IoC의 의미가 메소드나 객체의 호출작업을 개발자가 아닌 외부에서 결정하는 것으로 이해했습니다. 즉 코드의 흐름이 외부에 의해 결정되는 것입니다. new JdbcContext()는 개발자가 지정한 시점에서 실행되는 것이 아니라 setDataSource 메소드가 실행되는 시점에서 JdbcContext가 생성되기 때문에 IoC라고 하는 것으로 이해했습니다. 즉 UserDao 클래스가 직접 jdbcContext 생성에 영향을 미치는 것이 아니라 UserDao 클래스를 사용하는 곳에서 setDataSource 메소드를 사용하여 jdbcContext 클래스를 생성하기 때문에 IoC라고 이해했습니다.
@a-young-kim 아 이해했습니다.
그럼 추가로 궁금한 것은 현재는 UserDao의 입장에서 setter가 호출될 때 JdbcContext가 생성되므로 IoC가 적용되었다고 볼 수 있는 것인데, UserDao에서 순차적으로 직접 JdbcContext를 생성해도 JdbcContext 입장에서는 IoC라고 볼 수 있을까요?
\2. IoC는 단순히 프로그램의 제어를 역전시키는 것을 의미하기 때문에 DI 말고도 서비스 로케이터 패턴, 이벤트 드리븐 프로그램 등을 통해서도 달성할 수 있다고 합니다.
DI는 IoC 원칙을 실현하기 위한 디자인 패턴 중 하나로, 한 오브젝트가 필요로 하는 오브젝트에 대한 초기화/생성/주입을 외부에서 해주어 응집도 결합도를 낮출 수 있게 도와줍니다.
질문이 두 가지 입니다.
먼저 p.241 하단 코드를 보면
new JdbcContext()
부분에(IoC)
라고 표시되어 있는데 어떤 의미에서 IoC라고 하는건지 이해가 잘 되질 않았습니다.이를 이해해보려고 자료를 찾다가 IoC와 DI의 개념을 명확히 정리하지 못하고 있다고 느껴서 두 번째 질문은 IoC와 DI가 정확히 어떻게 다른가? 입니다.