Spring(1)总体概述
来源:互联网 发布:hash算法的实现原理 编辑:程序博客网 时间:2024/05/01 13:04
spring框架,是进行对象管理,对象关联,解耦的一个中间层框架。SSH(Struts+Spring+hibernate)三大Spring在中间就起着一个承上启下的作用。通过下边这张图来总括一下:
一、Spring是一个轻量级的IOC和AOP容器框架:
轻量级:程序实现不是很复杂,代码不是很多,占用资源不是很多,没有侵入性;
IOC(Inversion of Control 控制反转):指的是在spring框架的配置文件中声明对象,由框架负责创建对象,这叫做控制反转。实现方式有两种:DI(Dependency Injection)依赖注入,这也是Spring框架的实现方式,主要学习的也是这个;SL(Service Locator)服务器定位器实现方式。
DI依赖注入,就是框架不仅创建了对象,而其还负责初始化相关联的对象的过程。从实现方式上也分为3种方式:(1)Interface Injection(接口注入):容器运行时,目标对象实现特定的接口,然后容器通过接口将关联对象注入到目标对象中。这种方式Spring框架不支持,所以了解。(2)Setter Injection(set方法注入):容器运行时,通过类属性的set方法将关联对象注入到目标对象中。Spring框架支持,而且是我们开发经常使用的,非常重要。(3)Constructor Injection(构造方法注入):容器运行时,通过类的构造方法将关联对象注入到对象中。Spring框架也支持,没有set用的普遍。
Aop(Aspect Oriented Programming):一种面向横切面编程的思想方式,可以进行功能性扩展,具体详细介绍参考http://blog.csdn.net/liujiahan629629/article/details/18864211;
容器:可以容纳对象,并且可以控制对象的生命周期;
二,看一下使用步骤吧!
1,还是拷贝jar包:
2,拷贝框架的核心配置文件,存放在src目录下:
3,编写框架的核心配置文件,将声明对象都交给Spring框架来创建,以及初始化,例如service层的类,action层类,dao层类等等,都可以交给Spring进行管理,
<span style="font-size:18px;"> <!-- 声明Action对象 --> <bean id="loginAction" class="com.ljh.struts2.action.LoginAction" scope="prototype"></bean> </span>
分析:
a,框架创建对象的方式:
框架默认创建对象是单例的:scope=”singleton”
当然action我们想要多例创建,需要设置:scope=”prototype”
b,工厂BeanFactory,如果使用BeanFactory来加载Spring配置文件,那么是在调用getBean时,框架调用对象的默认构造方法来创建对象。BeanFactory功能是对bean对象的生命周期进行管理的。(创建,初始化,销毁)。
c,ApplicationContext(推荐,也是框架默认的)来用才对象来加载Spring配置文件,会在加载时解析配置文件,创建对象,而不是在getBean时创建。其实,ApplicationContext接口继承了BeanFactory,所以具备BeanFactory所有功能,同时增加扩展的功能,例如加载资源配置文件,国际化支持等!
4,如何测试,这里我们可以使用Junit(Java的单元测试进行测试)(我们现在是单独使用Spring为了是学习,后边会集成多个框架的)
三,Sping框架的优缺点:
优点:
(1)轻量级的容器框架,没有侵入性(2)IoC更加容易组合对象之间的关系,通过面向接口进行编程,可以低耦合开发。(3)易于本地测试(Junit单元测试,不用部署服务器)(4)AOP可以更加容易的进行功能扩展,遵循OCP开发原则。(5)Spring默认对象的创建为单例的,我们不需要再使用单例的设计模式来开发单体类。(6)Spring的集成很强大,另外可以对其他框架的配置进行一元化管理。(7)Spring的声明式事务的方便使用。
缺点:
自我感觉是所有框架共有的,就是开发对设计要求较高,集成测试麻烦,对框架有一定的依赖性。
- Spring(1)总体概述
- Spring源码学习(1) — 总体概述
- Spring StrutsMVC 总体概述
- Struts2(1)——总体概述
- Hibernate(1)——总体概述
- IBatis(1)——总体概述
- SpringMVC(1)——总体概述
- Spring(1) 总体概要
- Spring(一) 总体介绍
- jvm 笔记(1) jvm 总体概述
- java集合系列1-总体概述
- Spring(1)概述
- 总体参数估计概述
- ARM ABI总体概述
- Oracle体系结构总体概述
- 软件工程之总体概述
- UML总体概述
- UML总体概述
- java生成动态gif格式与png格式的验证码(代码4)
- 从0开始学习 GitHub 系列之「04.向GitHub 提交代码」
- Eclipse 远程调试
- c#多线程与异步开发 (上)
- java生成动态gif格式与png格式的验证码(代码3)
- Spring(1)总体概述
- English sentenses
- 连连看 深搜带方向
- struts2拦截器的实现原理及源码剖析
- 从0开始学习 GitHub 系列之「05.Git 进阶」
- Batch_size问题
- java生成动态gif格式与png格式的验证码(代码2)
- 用两个栈实现队列
- 关于结构体以及内部指针的一道面试题