1. 在web 层,WEB 容器,比如TOMcat自动加载的是 servlet 容器,servlet 容器加载用户实现的 servlet 实现类。使用springmvc 的话,就是配置一个前端控制器--dispatcherServlet ,这就是servlet。
问题来了,那么spring IOC容器怎么加载呢? ,要在servlet里使用 bean 依赖注入开发,就只能由 servlet加载这个IOC容器了。
2. 在 App应用服务层, APP/EJB 应用服务器, 比如JBOSS ,分布式系统的调用一般选择基于EJB 来实现,这是因为EJB 提供了很多企业级的特性。JBOSS 部署ejb的时候会自动加载和初始化 EJB ,EJB 需要访问本地的其他service bean 来完成这个功能调用。 如果APP也想使用Spring IOC 的bean 特性来开发的话, 那么EJB 必须持有这个 spring IOC 容器,一般是classpathXmlApplicationContext。才能获取到spring bean开发的 service bean。