写作目的
记录学习具体内容,记录学习进度,常见问题以及解决方案,方便自己日后查看。
Spring的认识(基本知识)
Spring是主流Java Web开发框架,是学习Java开发的必备技能之一。Spring是一站式 轻量级开源框架。以IoC(Inversion of Control,控制反转)以及AOP(Aspect Oriented Programming,面向切面编程)为内核,使用基本JavaBean来完成以前只可能由EJB(Enterprise Java Beans,Java企业Bean)完成的工作。
Spring贯穿与表现层,业务逻辑层和持久层,以高度开放性与已有框架进行无缝整合。
Spring框架优点
Spring具有简单,可测试和松耦合特点,不仅可以用于服务器端开发,也可以应用于任何Java应用开发。
1.非侵入式设计
侵入可以理解为实现接口,接口的实现就是代码的侵入,Spring不要求我们实现它的接口,相对于需要实现接口的EJB来讲,Spring就有非侵入式设计的优点。
2.方便解耦,简化开发
Spring容器可以实现管理对象的创建,对象的依赖关系和对象的维护等工作,降低组件之间的耦合性。简化开发。
3.支持AOP
Spring提供了对AOP的支持,允许将通用事务,例如安全,事务,日志等进行集中式处理,提高程序复用性,简化代码开发。(还没理解。。。。)
4.支持声明式事务处理
不用手动写代码处理事务,只需要在Spring配置文件中写标签,在标签中写属性,就可以完成对事务的处理。
5.方便程序的测试
Spring提供了对Junit4的支持,有单独模块整合Junit,在写Spring程序时方便测试。
6.方便集成各种优秀框架
Spring属于一站式框架,并不排斥或者取代其他优秀框架,而是将优秀的框架集成在一起,方便我们使用。
7.降低Java EE API的使用难度
降低在Java EE开发中一些难用的API(Application Programming Interface,应用程序编程接口)(如JDBC,JavaMail等),Spring对这些API进行封装,降低使用难度。
Spring的体系结构
业务逻辑层
Data Access/Integration (数据访问/集成) |
JDBC(提供了JDBC的封装,减少开发过程中对数据库操作的编码) | ORM(对流行的对象关系映射API提供了集成层的支持) |
OXM(提供了支持对象/XML映射的抽象层实现) | JMS(Java消息传递服务) |
Transactions(事务模块,用于处理事务,支持对实现特殊接口以及所有POJO类的编程和声明式的事务管理) |
表示层
Web |
Servlet (包含了Spring的MVC模型和REST Web Services实现的Web应用程序) | Web(提供了基本的Web开发集成特性,如多文件上传,Servlet监听器初始化IoC容器等) |
WebSocket(提供了WebSocket和SockJS的实现,以及对STOMP的支持) | Portlet(提供了在Portlet环境中使用MVC实现,类似Servlet模块的功能) |
持久层(核心容器,是其他模块建立的基础)
Core Container(核心容器) |
Beans(提供了BeanFactory,是工厂模式的经典实现,Spring将管理对象称为Bean) | Core核心模块(提供了Spring框架的基本组成部分,包括IoC和DI功能) | Context上下文模块(建立在Core和Beans模块的基础上,是访问定义和配置任何对象的媒介) | Context-support(提供了第三方库嵌入Spring应用的集成支持) | SqEL模块(是运行时查询和操作对象的强大的表达式语言) |
其他模块
AOP(提供了面向切面编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,降低耦合性) | Aspects(提供了与AspectJ的集成功能,AspectJ是一个功能强大且成熟的面向切面编程(AOP)的框架) |
Spring框架包(jar包)
Spring框架包分为三类,以RELEASE.jar结尾的是Spring框架class文件的jar包,以RELEASE-javadoc.jar结尾的是Spring框架API文档的压缩包,以RELEASE-sources.jar结尾的是Spring框架源文件的压缩包。
Spring的四个基础包
四个Spring的基础包分别对应Spring核心容器的四个模块
1.spring-core-4.3.6.RELEASE.jar:包含了Spring框架基本的核心工具类,Spring其他组件都要用到这个包里的类,是其他组件的基本核心。
2.spring-beans-4.3.6.RELEASE.jar:是所有应用都要用到的jar包,它包含访问配置文件,创建和管理Bean以及进行Inversion of Control(IoC)或者Dependency Injection(DI)操作相关的所有类。
3.spring-context-4.3.6.RELEASE.jar:Spring提供了在基础IoC功能上的拓展服务,还提供了许多企业级服务的支持和框架的封装。
4.spring-expression-4.3.6.RELEASE.jar:定义了Spring的表达式语言。
第三方依赖包
commons-logging-1.2.jar:在使用Spring开发时,除了要使用自带的jar包外,Spring核心容器还需要依赖的第三方jar包。