前言
怎样的架构程序,我们可以认为是一个优秀的架构?
我们一般考虑的标准:可维护性好,可扩展性好,性能。
什么叫可扩展性好?
答:就是可以做到,不断的增加代码,但是可以不修改原来的代码的程序
如何让程序的可维护性好,可扩展性好呢?
业界有一个公认的标准,高内聚,低耦合。
高内聚:就是尽量将代码写在与之功能描述一致的模块中。如User表中的操作写在UserDAO里面就不用写在非UserDAO的类里面。
低耦合:就是尽量减少类与类之间的直接关系。(重点)
直接关系:Web层依赖Service,在Web直接new Service层的类的对象
Service层依赖Dao层,在Service层直接new Dao层的对象
Spring框架就是通过IoC/DI(控制反转/依赖注入)实现程序的解耦。从而提高程序的维护性和扩展性。
Spring概述
Spring是什么
Spring是一个JavaEE轻量级的一站式开发框架。
JavaEE: 就是用于开发B/S的程序。(企业级)
轻量级:使用最少代码启动框架,然后根据你的需求选择,选择你喜欢的模块使用。
重量级:早期有的EJB,开发一个HelloWorld程序都需要引入EBJ的全部模块
一站式:提供了,表示层(Struts2/SpringMVC),服务层,持久层的所有支持。
Spring框架出现的背景
在世界第一套有Java官方Sun公司推出的企业级开发框架EJB出现后,瞬间风靡全球。被各大公司所应用。
Spring之父,Rod Jonhson是一个音乐博士,在Sun公司的大力推广下,也成为EJB框架的使用者。
在深入研究完EJB框架(由Sun主导开发的一个JavaEE开发框架),无法接收这么一个框架被吹成世界第一,具体查看他吐槽EJB的书《Expert one on one J2EE design and development》
其中突出被他吐槽最厉害的一个点就EJB的重量级,就是只要使用EJB里面任何一个组件。都要将所有EJB的jar导进去。
于是他就提供了一个他的解决方案:轻量级的一站式企业开发框架。
那么什么是轻量级呢?
就是除内核模块(4个jar),其他模块由开发者自由选择使用,同时支持整合其他框架。
也可以称为就是可插拔式开发框架,像插头和插座一样,插上就用。这就是Spring框架核心理念。(Ioc)
那么什么是一站式呢?
就是Spring框架提供涵盖了JavaEE开发的表示层,服务层,持久层的所有组件功能。也就是说,原则上,学完一套Spring框架,不用其他框架就可以完成网站一条流程的开发。
如图:
Spring框架的作用
根据以上章节的描述。Spring是一个JavaEE一站式的开发框架。它提供的功能涵盖了JavaEE程序中的表示层,服务层,持久层功能组件。这意味着,使用了Spring框架,一个框架就可以满足整个JavaEE程序的开发。
但Spring框架,更加强调的是它的轻量级(模块的可插拔)!!也就是说,除了内核以外模块,如果你不想使用可以不用,它能够整合任何第三方的框架。
所以,在现实开发中,Spring主要用于整合其他框架。
总结
- Spring是一个一站式的企业级(JavaEE)开发框架,意味着,仅仅使用一个Spring框架就可以满足JavaEE开发的表示层,服务层,持久层的开发。
- Spring强调的理念是,轻量级。意味着Spring提供的功能模块,除了内核模块以外,开发人员可以选择性使用。
- 所以,Spring框架在现实开发中,主要的功能用于整合,各种开发来开发项目。
Spring框架包
Spring官方网站
https://spring.io/
框架包的下载
Spring官方提供的Maven方式的项目下载。
https://start.spring.io/
但是基于简单入门的原则,我们要通过导入包的方式来学习。需要下载框架的zip包
路径为:http://repo.springsource.org/libs-release-local/org/springframework/spring/
目录说明
–根目录
–类库规则
包说明
包名 | 说明 |
---|---|
spring-aop-4.3.2.RELEASE.jar | 实现了AOP的支持 |
spring-aspects-4.3.2.RELEASE.jar | AOP框架aspects支持包 |
spring-beans-4.3.2.RELEASE.jar | 内核支撑包,实现了处理基于xml对象存取 |
spring-context-4.3.2.RELEASE.jar | 内核支撑包,实现了Spring对象容器 |
spring-context-support-4.3.2.RELEASE.jar | 容器操作扩展包,扩展了一些常用的容器对象的设置功能 |
spring-core-4.3.2.RELEASE.jar | 内核支撑包,Spring的内核 |
spring-expression-4.3.2.RELEASE.jar | 内核支撑包,实现了xml对Spring表达式的支持 |
spring-instrument-4.3.2.RELEASE.jar | 提供了一些类加载的的工具类 |
spring-instrument-tomcat-4.3.2.RELEASE.jar | 提供了一些tomcat类加载的的工具类,实现对应Tomcat服务的调用 |
spring-jdbc-4.3.2.RELEASE.jar | SpringJDBC实现包,一个操作数据库持久层的子框架 |
spring-jms-4.3.2.RELEASE.jar | 集成jms的支持,jms:Java消息服务。 |
spring-messaging-4.3.2.RELEASE.jar | 集成messaging api和消息协议提供支持 |
spring-orm-4.3.2.RELEASE.jar | ORM框架集成包,实现了Hibernate,IBatis,JDO的集成。 |
spring-oxm-4.3.2.RELEASE.jar | Spring OXM对主流O/X Mapping框架做了一个统一的抽象和封装。就是对应XML读写框架的支持 |
spring-test-4.3.2.RELEASE.jar | Spring集成JUnit测试 |
spring-tx-4.3.2.RELEASE.jar | 事务代理的支持 |
spring-web-4.3.2.RELEASE.jar | SpringWeb通用模块 |
spring-webmvc-4.3.2.RELEASE.jar | SpringMVC子框架 |
spring-webmvc-portlet-4.3.2.RELEASE.jar | Spring对门户技术(portlet)的支持 |
spring-websocket-4.3.2.RELEASE.jar | Spring对websocket的支持 |