持续学习&持续更新中…
守破离
【雷丰阳SSM基础】【Spring】【01】Spring概述
学习Spring核心关注IoC和AOP
什么是框架
- 框架是高度抽取可重用代码的一种设计,具有高度的通用性。
- 框架是慢慢演化出来的:
- 比如说,写书城项目时:WebUtils.java、BaseServlet.java…
- 发现上面的几个类写得还不错,就可以将它们打包为:bookstore.jar(工具包),以后就可以通过导入jar包的方式使用这些工具类了。
- 常用的别人写好的工具包:commons-fileupload、commons-io、commons-dbutils、…
- 但是有一个问题,如果下次还要写一个类似书城的项目,怎么办呢?还需要重头开始再写一遍吗?
- 其实不用,我们可以把这个书城项目的一些功能模块整体的给抽取出来。
- 这样的话,之后在写类似书城的项目时,就可以直接在这些代码的基础上进行开发了。
- 但是,如果之后要写一个金融项目呢?那么很遗憾,这些抽取自书城项目的代码大多就用不了了。
- 所以说,代码越抽取,就应该越具有通用性,比如可以将事务控制、权限验证、处理各种请求的Servlet、日志记录、…等这些每个项目都要使用的功能统一抽取出来,组成一个框架。
- 框架:多个可重用模块的集合,形成某个领域的一个整体解决方案。
- 框架:相当于一个半成品软件(毛坯房)。也就是说:框架不能作为一个成品软件去提供某些功能,框架应该是一些功能模块,给你放在那儿,需要你自己去动态组合你所需的模块形成一个可以提供功能的成品软件。
Spring是什么
Spring为简化企业级开发而生,为JavaEE开发带来了春天(Spring)。
- Spring是一个开源的IoC(DI)和AOP容器框架。
- 容器可以管理所有的组件(具有功能的类习惯上称之为组件)。
- 使用Spring,JavaBean就可以实现很多那些以前要靠EJB(Enterprise Java Bean)才能实现的功能。
- 同样的功能,在EJB中要通过繁琐的配置和复杂的代码才能够实现,而在Spring中却非常的优雅和简洁。
Spring的优良特性
- 非侵入式:基于Spring开发的应用,可以不依赖(不使用)Spring的API。
- 依赖注入:
DI
(Dependency Injection),DI
是IoC
(Inversion of Control)最经典的实现。 - 面向切面编程:
AOP
(Aspect Oriented Programming)。 - 容器:Spring是一个容器,因为它包含并且管理应用对象的生命周期。
- 组件化:Spring实现了使用简单的组件配置组合成一个复杂的应用(需要哪个功能导哪个包)。在 Spring 中可以使用XML和Java注解组合这些对象。
- 一站式:
- 用好了Spring框架,就可以把Java企业级开发从头到尾、从页面到交互、到Service、到Dao全部搞定。
- 在IoC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库(实际上Spring自身也提供了表示层的SpringMVC和持久层的SpringJDBC)。
Spring的模块划分
建议:用哪个模块导哪个包。
Spring在运行时依赖commons-logging-1.1.3.jar
这个日志包。
一个绿颜色块就代表一个模块。
黑颜色块代表这个模块由哪些jar包组成;要使用某个模块的完整功能就得将这些jar包都导入项目中。
-
Test:Spring的单元测试模块
spring-test-4.0.0.RELEASE
-
Core Container:核心容器(IoC)
spring-beans-4.0.0.RELEASE spring-core-4.0.0.RELEASE spring-context-4.0.0.RELEASE spring-expression-4.0.0.RELEASE (SpEL:Spring的Expression Language)
-
AOP+Aspects:面向切面编程模块
spring-aop-4.0.0.RELEASE spring-aspects-4.0.0.RELEASE
-
Data Access:数据(库)访问模块
spring-jdbc-4.0.0.RELEASE spring-orm-4.0.0.RELEASE (orm:Object Relation Mapping) spring-oxm-4.0.0.RELEASE (oxm:Object XML Mapping)
-
Integration:整合模块
spring-jms-4.0.0.RELEASE spring-tx-4.0.0.RELEASE (tx:transaction 事务)
-
Web:Spring开发Web应用的模块
spring-websocket-4.0.0.RELEASE (WebSocket) (WebSocket建议了解、学习一下) spring-web-4.0.0.RELEASE (Servlet) (和原生的WEB相关) spring-webmvc-4.0.0.RELEASE (Web) (用于开发WEB项目) spring-webmvc-portlet-4.0.0.RELEASE (Portlet) (开发WEB应用的组件集成)
参考
雷丰阳: 雷神的Spring、Spring MVC、MyBatis课程.
本文完,感谢您的关注支持!