1、什么是spring
spring是2003年兴起的轻量级(相对EJB而言) Java开源框架。
2、什么是EJB
什么是EJB:维基百科(企业级JavaBean(Enterprise JavaBean, EJB,或称Jakarta Enterprise Beans)是一个用来构筑企业级应用的服务器端可被管理组件。)
3、spring官网以及生态产品
- spring.io/ spring官网
- 这是目前spring所有的生态产品,其中其他的产品都依赖 Spring Framework
4、spring架构图
Spring架构图:
4.1、Core Container(核心容器)
Core Container(核心容器) :这个是整个框架的基础部分,提供了Ioc,依赖注入,这里最核心的概念就是BeanFactory。
- Core:这里主要提供了Spring框架基本的核心工具类,Spring其他组件都需要用到这个包里面的类,它是其他组件的核心,如果有需要,我们也可以在自己的项目中单独引用core这个模块
- Beans:Ioc核心的东西都在这个模块中,包括Bean的创建和管理,配置文件的访问等等
- Context:这个模块构建于Core和Beans之上,提供了许多扩展功能,例如:事件,国际化等
- SpEl:提供了强大的表达式语言,可以在代码运行的时候去查询和操作对象
4.2、Data Access/Integration(数据访问和通信)
Data Access/Integration(数据访问和通信) :这个模块主要包含了JDBC、ORM、OXM、JMS、Transaction这些模块
- JDBC:这个模块提供了JDBC的抽象层,这个JDBC抽象层可以消除冗长的JDBC代码,自动解析各个数据库厂商的错误代码。
- ORM:对象关系映射,常见的Mybatis、JPA、Hibernate都属于ORM框架。Spring中的ORM为这些数据库框架提供了一个交互层,原本利用这些数据库框架操作数据库的时候,不同的框架写法不同,以事务为例,不同框架对数据库事务的处理逻方式定是不同的,Spring ORM框架就把这些通用的操作封装起来了,以事务为例,以后无论使用哪个数据库框架,都可以通过几个简单的注解来添加事务。
- OXM:这个模块提供了Object/XML映射实现的抽象层,这个模块的映射实现包括JAXB、XML Beans等 (现在前后端分离都是通过JSON进行交互了,所以这块使用的很少了)
- JMS:Java Messaging Service,封装了一些消息中间件的操作。
- Transaction:事务处理。这个模块支持编程式事务和声明式事务。Spring中的tx实质上是定义了一套规范,任何开发者都可以为之提供自己的实现,所以
@Transaction不仅可以加在关系数据库上,也可以添加在消息中间件上。
4.3、Web模块
Web:这个模块主要提供了Web开发的相关支持。
- WebSocket:全双工通信工具。传统的HTTP通信,只能是客户端发送消息给服务端,服务端给客户端响应,服务端是无法直接推送消息给客户端的。但是在具体的项目实践中,我们往往需要服务端主动给客户端推送消息,例如:一些即时通信项目、聊天等等。Java EE里边从Servlet3开始是支持WebSocket的,但是原生的写法比较麻烦,所以推出了WebSocket工具,借此可以简化WebSocket开发。
- Web:支持Web开发的一些基础特性,如文件上传、监听器等
- Servlet:一般就是我们常说的Spring MVC。
- Porlet:提供了Porlet环境和Servlet模块的MVC实现。
4.4、AOP模块
AOP:面向切面变成。
- Aspects:提供了对AspectJ的集成支持。
- Instrumentation:这个模块提供了 class instrumentation支持和classloader的实现,使得可以在特定的服务器上使用。
4.5、Test模块
Test模块:测试模块,支持Junit和TestNG对Spring组件进行测试。