Spring框架是一款开源java平台。建立于2003年,轻量级框架(基本版本只有2M)。java
使用Spring优势:web
(1) 使用POJOs开发,再也不须要EJB容器;若是必要,仅须要Tomcat或其余servlet容器数据库
(2) 模块化组织,只需关注用到的模块express
(3) 高度复用,ORM框架、日志框架、Quartz、JDK timers编程
(4) 测试便捷,POJOs注入测试数据缓存
(5) MVC web框架,可支持Struts或其余小众框架tomcat
(6) Spring提供API,转化异常(JDBC, Hibernate, or JDO)为不检查异常安全
(7) 轻量化IoC容器,适用于CPU、Mem资源有限的机器服务器
(8) 事务管理接口网络
DI技术
Spring框架最著名的特征,IoC概念的典型实现。
AOP(Aspect Oriented Programming)面向切面编程
Spring的另外一个关键技术。cross-cutting concerns,即应用扩展只多点,且这些“横切关注点”与业务逻辑剥离。面向切面编程的例子:日志、声明式事务、安全、缓存等。
Spring支持最大20多个模块,根据所需选择便可
Core Container
Core |
提供最基本框架功能,包括IoC、依赖注入等 |
|
Bean |
BeanFactory 工厂模式 |
|
Context |
以Core和Bean模块为基础,访问任何对象的媒介;ApplicationContext |
|
SpEL |
provides a powerful expression language for querying and manipulating an object graph at runtime |
|
Data Access/Integration
JDBC |
提供JDBC抽象层 |
|
ORM |
提供对象关联映射API 如JPA、JDO、Hibernate、iBatis的整合层 |
|
OXM |
提供对象/XMLg关联映射抽象层,支持JAXB、Castor、XMLBeans、JiBX and XStream |
|
JMS |
Java Messaging Service |
|
Transaction |
支持 面向过程和声明式事务管理 |
|
Web
AOP |
切面编程(定义方法拦截器和切点,解耦功能代码) |
|
Web-MVC |
Model-View-Controller 实现 |
|
Web-Socket |
support for WebSocket-based, two-way communication between the client and the server in web applications |
|
Web-Portlet |
provides the MVC implementation to be used in a portlet environment and mirrors the functionality of Web-Servlet module |
|
其余
Web |
web功能基础模块、IoC容器和面向web application context初始化 |
|
Aspects |
AspectJ |
|
Instrumentation |
类装饰、类加载 |
|
Messaging |
支持STOMP协议 |
|
Test |
JUnit or TestNG frameworks |
|
J2EE中容器充当中间件的角色,主要包括:WEB容器、EJB容器。
Web容器
给应用程序组建(JSP、SERVLET)提供一个环境,JSP、Servlet直接与容器中的环境变量接口交互,没必要关注其余系统问题。经常使用Web服务器:tomcat、webloggc、WEBSPHERE。这些容器接口遵照J2EE规范WEB APPLICATION 标准。
EJB容器(Enterprise java bean 容器)
给运行其中的EJB组建提供各类管理功能(邮件服务、事务管理)。EJB容器与Web容器原理大体相同,区别是被隔离的外界环境,Web实现与基于Http请求交互(Servet没必要关心Http细节,直接引用session、request、response),而EJB容器主要是与数据库、其余服务交互(EJB组件没必要关心数据库链接速度、事务控制)。
官方解释:商务软件的核心部分是它的业务逻辑。业务逻辑抽象了整个商务过程的流程,并使用计算机语言将他们实现。
J2EE 对于这个问题的处理方法是将业务逻辑从客户端软件中抽取出来,封装在一个组件中。这个组件运行在一个独立的服务器上,客户端软件经过网络调用组件提供的服务以实现业务逻辑,而客户端软件的功能单纯到只负责发送调用请求和显示处理结果。在J2EE 中,这个运行在一个独立的服务器上,并封装了业务逻辑的组件就是EJB(Enterprise JavaBean)组件。
EJB底层实现:
EJB 是运行在独立服务器上的组件,客户端是经过网络对EJB 对象进行调用的。在Java中,可以实现远程对象调用的技术是RMI,而EJB 技术基础正是RMI。经过RMI 技术,J2EE将EJB 组件建立为远程对象,客户端就能够经过网络调用EJB 对象了
对象(Object):
在java的世界里,对象是经过属性和方法来分别对应事物所具备的静态属性和动态属性.
类(Class):
用于描述同一类型的对象的一个抽象的概念.
组件(component):
组件也是抽象的概念,能够理解为一些符合某种规范的类组合在一块儿就构成了组件。他能够提供某些特定的功能。J2EE来讲,有什么servlet,jsp, javabean,ejb都是组件。但实际他们都是类,只不过有他们特殊的规定。组件和类的关系:符合某种规范的类的组合构成组件
容器(Container):
容器也叫作组件容器,组件容器是一种比较特殊的组件,它能够包含其余的组件。咱们能够把组件放在组件容器中。
框架(framework):
就是某种应用的半成品,就是一组组件,供你选用完成你本身的系统.java框架就是一些类和接口的集合,经过这些类和接口协调来完成一系列的程序实现。框架又叫作开发中的半成品,它不能提供整个WEB应用程序的全部东西,可是有了框架,咱们就能够集中精力进行业务逻辑的开发而不用去关心它的技术实现以及一些辅助的业务逻辑。咱们熟知的Structs和Spring就是表示层和业务层框架的表明。
架构:
软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的链接则明确和相对细致地描述组件之间的通信。在实现阶段,这些抽象组件被细化为实际的组件,好比具体某个类或者对象。在面向对象领域中,组件之间的链接一般用接口()来实现
框架不是构架。架构肯定了系统总体结构、层次划分,不一样部分之间的协做等设计考虑。框架比架构更具体,更偏重于技术涉嫌。对于同一架构(好比Web开发中的MVC),能够经过多种框架来实现。