学习spring思想,就不得不了解spring的起源,这就又不得不扯出EJB和JavaEE平台。
JavaEE平台:提供了一套标准API和以组件为基础的企业架构,更提出了一个“容器”的概念,由此可以降低企业级开发复杂度。
那组件是什么?容器又是什么?
组件:java代码总是通过抽象来达到复用,但随着软件规模的扩大,就需要一些类单个或组合起来,实现某些功能,一般都是已编译好的类,,对外只提供接口,来达到二进制级别的复用,而Java Bean就是最简单的组件。
容器:为某些组件的运行提供必要运行支持的一个软件环境。如Web容器为Servlet和JSP组件提供运行环境,EJB容器为EJB组件提供运行环境。而一般来说这些组件无法脱离这些容器单独运行。
除提供组件运行环境之外,容器还提供了访问系统底层服务的简单方法。如EJB容器为EJB组件提供了声明式事务服务,使开发人员不必去管事务
传统EJB是一个重量级EJB容器加重量级EJB组件。
重量级EJB组件:需要实现EJB接口规范,代码侵入。但在EJB3.0后采用注解
重量级EJB容器:只能运行EJB组件(重量级组件导致这个容器也是重量级,个人观点),现在一般只有Websphere,Weblogic,Jboss等实现了EJB容器,Tomcat,Resin不支持
EJB组件的访问,必须通过JNDI访问,并且测试并不方便
OK,至此Spring framework出现,一个轻量级的容器,而且任何Java Bean,JNDI对象和所有能被实例化的Java对象都可以成为组件,让Spring容器管理