在学习任何一样事情前,我们都需要知道为何要学习他,他有什么优点?就像喜欢一个人一样,为何要喜欢他,一定是因为他身上的某个点戳中了你,所以才喜欢。
学习东西亦是如此,所以在学习Spring实战前,我们先了解下为何要学习Spring。
1.Spring是什么
一句话解释:Spring是一个全方位的应用程序框架
更详细的查看spring历史来源,可google
2.Spring的优点
最大优点是:简化开发(makes java simple)
细化优点(特性):
- 基于POJO的轻量级和最小侵入型编程
- 通过依赖注入和面向接口实现松耦合
- 通过切面和惯例进行声明式编程
- 通过切面和模版减少样板式代码
3.Spring的架构
- A 表现层 web层 MVC是表现层的一个设计模型
- B 业务层 service层
- C 持久层 dao层
4.Spring需要引入的依赖包
在pom中引入依赖时,往往是网上粘贴一堆依赖,但并不知道哪些到底需要引入,所以我们需要明确spring到底需要哪些jar包呢
这个图就很好的解释了我们到底需要哪些jar包,图中所有的矩形都对应一个jar包
下面我们一个一个来看:
1.Test
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.4</version>
<scope>test</scope>
</dependency>
在pom中引入依赖spring-test,可以看到该依赖引入了spring-core的jar包
2.Core Container
包含了beans,core,context和expression language这四个jar包
spring-core:依赖注入IoC与DI的最基本实现
spring-beans:Bean工厂与bean的装配
spring-context:spring的context上下文即IoC容器
spring-expression:spring表达式语言
以上均可单独引入,但spring-webmvc依赖中包含了以上依赖,所以可直接引入spring-webmvc
3.AOP
spring-aop:面向切面编程
spring-aspects:集成AspectJ
spring-instrument:提供一些类级的工具支持和ClassLoader级的实现,用于服务器
spring-instrument-tomcat:针对tomcat的instrument实现
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.3.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>2.5.6</version>
</dependency>
4.Data Access
spring-jdbc:jdbc的支持
spring-tx:事务控制
spring-orm:对象关系映射,集成orm框架
spring-oxm:对象xml映射
spring-jms:java消息服务
5.Web
spring-web:基础web功能,如文件上传
spring-webmvc:mvc实现
spring-webmvc-portlet:基于portlet的mvc实现
spring-struts:与struts的集成,不推荐,spring4不再提供
所以总结下来,当需要引入上面所有的jar包时,由于每个依赖又存在其他依赖,可引入如下依赖(data access不在范围中):
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.4</version>
</dependency>