这导致了框架和库之间的差异:例如Session Bean接口定义了ejbRemove,ejbPassivate(存储到辅助存储器)和ejbActivate(从被动状态恢复),您无法控制何时调用这些方法,只能控制它们执行的操作。容器会调用我们,我们不会调用它。
我认为,DI是IOC的观点意味着对象的依赖性被倒置:它不再控制自己的依赖关系、生命周期等,而是由其他东西为您完成。但是,正如您告诉我的那样,手动进行DI并不一定是IOC。我们仍然可以进行DI而没有IOC。控制反转是使框架与库不同的关键部分。库本质上是一组函数,您可以调用这些函数,现在通常组织成类。每个调用都会执行一些工作,然后返回控制权给客户端。
然而,在这篇文章中(来自另一个面向C/C++的IOC框架pococapsule),它建议由于IOC和DI,IOC容器和DI框架比J2EE更加优越,因为J2EE将框架代码混合到组件中,因此不能使其成为纯旧的Java/C++对象(POJO/POCO)。
除了依赖注入模式之外的控制反转容器(存档链接)
额外阅读以理解旧的基于组件的开发框架存在的问题,从而导致上述第二篇论文:控制反转的原因和内容(存档链接)
我的问题:什么是IOC和DI?我很困惑。根据pococapsule的说法,IOC不仅仅是对象或程序员与框架之间的控制反转。