spring框架,是进行对象管理,对象关联,解耦的一个中间层框架。SSH(Struts+Spring+hibernate)三大Spring在中间就起着一个承上启下的作用。好,首先我们先来看一下Spring框架的一些知识点,通过下边这张图来总括一下:

好,这篇博客咱们先来对Spring框架进行一个初步的了解。

一,框架介绍:

1,先看一下帮助文档的这张图,里边主要包括了Spring自身的功能,还有可以和其框架结合的一些框架,通过这张图可以看出,Spring框架和其他框架的集成能力是非常强的。

2,Spring是一个轻量级的IOC和AOP容器框架:

a,轻量级:程序实现不是很复杂,代码不是很多,占用资源不是很多,没有侵入性;

b,IOC(Inversion of Control 控制反转):对象创建责任的反转(重点,核心);

c, Aop(Aspect Oriented Programming):一种面向横切面编程的思想方式,可以进行功能性扩展,看前边的一篇转载的博客:面向横切面(AOP)编程

d,容器:可以容纳对象,并且可以控制对象的生命周期;

二,看一下使用步骤吧!(框架用多了,感觉步骤都大同小异)

1,还是拷贝jar包:

2,拷贝框架的核心配置文件,存放在src目录下:

3,编写框架的核心配置文件,将声明对象都交给Spring框架来创建,以及初始化,例如service层的类,action层类,dao层类等等,都可以交给Spring进行管理,看一个例子:

  1. <span style="font-size:18px;">      <!-- 声明Action对象 -->
  2. <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为了是学习,后边会集成多个框架的)

a,先看一下Junit单元测试的使用方法:Junit4详解

b,利用beanFactory加载配置文件:

  1. <span style="font-size:18px;">      //加载配置文件,创建Spring的应用环境
  2. String path = "applicationContext.xml";
  3. Resource resource = new ClassPathResource(path);    //推荐
  4. //Resource resource = new FileSystemResource("src/applicationContext.xml");
  5. //Resource resource = new ServletContextResource(servletContext, path); //如果文件存放到WEB-INF目录下
  6. BeanFactory factory = new XmlBeanFactory(resource);
  7. //从Spring环境中获取对象
  8. Object obj = factory.getBean("loginAction");
  9. LoginAction action = (LoginAction)obj ; </span>

c,  利用ApplicationContext加载配置文件:

  1. <span style="font-size:18px;">      ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
  2. Object obj = ac.getBean("loginAction");
  3. </span>

这就是Spring的简单使用步骤,当然还有配置文件的如何编写,Aop的使用等,后边会介绍到。

三,Sping框架的优缺点:

优点:

  • 轻量级的容器框架,没有侵入性
  • IoC更加容易组合对象之间的关系,通过面向接口进行编程,可以低耦合开发。
  • 易于本地测试(Junit单元测试,不用部署服务器)
  • AOP可以更加容易的进行功能扩展,遵循OCP开发原则。
  • Spring默认对象的创建为单例的,我们不需要再使用单例的设计模式来开发单体类。
  • Spring的集成很强大,另外可以对其他框架的配置进行一元化管理。
  • Spring的声明式事务的方便使用。

缺点:

自我感觉是所有框架共有的,就是开发对设计要求较高,集成测试麻烦,对框架有一定的依赖性。

总而言之,Spring框架功能是非常强大的,单独使用可能感觉不是很深,和其他的框架结合使用,就会张显她的魅力

Spring(一)——总体介绍的更多相关文章

  1. Spring Framework简单介绍

    Spring Framework        学习java编程不知不觉已经三年时间了,開始的时候,总是喜欢看着视频,然后按部就班的敲打着键盘,每当系统正常执行后.心里乐开了花.最開始的时候,所有的代 ...

  2. ABP(现代ASP.NET样板开发框架)系列之1、ABP总体介绍

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之1.ABP总体介绍 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  3. 基于MVC4+EasyUI的Web开发框架形成之旅--总体介绍

    最近花了很多时间在重构和进一步提炼Winform开发框架的工作上,加上时不时有一些项目的开发工作,我博客里面介绍Web开发框架的文章比较少,其实以前在单位工作,80%的时间是做Web开发的,很早就形成 ...

  4. TMS320C54x系列DSP的CPU与外设——第2章 TMS320C54x DSP体系结构总体介绍

    第2章 TMS320C54x DSP体系结构总体介绍 本章介绍TMS320C54x DSP体系结构的概况,包括中央处理单元(CPU).存在器和片内外设. C54x DSP采用了高级的改进哈佛结构,用8 ...

  5. 飞达资讯App总体介绍及关系架构图

    飞达资讯App总体介绍: 下图为飞达资讯App的关系架构图: 该App关系架构图所需的图片云盘链接地址:http://pan.baidu.com/s/1gfHIe4b 提取密码:x1nr 该App的云 ...

  6. 基于WebForm+EasyUI的业务管理系统形成之旅 -- 总体介绍

    一.系统总体介绍 企业业务管理系统是针对经营企业管理而开发的专业管理软件, 是以“精细管理.过程监控”为设计理念,全面满足企业的信息化管理需求,充分发挥专业.平台.灵活等优点. 集进销存.财务.CRM ...

  7. EQueue - 一个C#写的开源分布式消息队列的总体介绍(转)

    源: EQueue - 一个C#写的开源分布式消息队列的总体介绍 EQueue - 一个纯C#写的分布式消息队列介绍2 EQueue - 详细谈一下消息持久化以及消息堆积的设计

  8. AngularJs学习笔记1——总体介绍

    这周末在家呆了两天,正好中午闲暇时间继续分享Angularjs相关,今天主要分享Angularjs总体介绍及数据绑定部分内容,下面直接进入主题. 1.基本概念: AngularJS是为了克服HTML在 ...

  9. Spring MVC 使用介绍(十五)数据验证 (二)依赖注入与方法级别验证

    一.概述 JSR-349 (Bean Validation 1.1)对数据验证进一步进行的规范,主要内容如下: 1.依赖注入验证 2.方法级别验证 二.依赖注入验证 spring提供BeanValid ...

随机推荐

  1. myeclipse自动生成可持久化类的映射文件的方法

    1.打开DB Browser,新建一个数据库的连接,找到想要持久化操作的数据库表的图标,右键选择hibernate reverse engineering 2.之后出现如下所示: java src f ...

  2. IOS 整理

    防止程序进入休眠状态 设置应用程序的 idleTimerDisabled 属性为 YES (默认为NO) [UIApplication sharedApplication].idleTimerDisa ...

  3. C# 网络编程之网页自动登录 (一).使用WebBrower控件模仿登录

    最近学习C#网络编程中,想实现网页自动登录并提交GET/POST信息,再实现循环登录不断发送报文给服务器,服务器发送消息给客户端记录能登录的账户和密码,做到后面实现绕过验证码.动态抓取登录位置等,但由 ...

  4. iOS 开发之 ReactiveCocoa(进阶)

    Map : 映射 UITextField *textField =[[UITextField alloc]initWithFrame:CGRectMake(100, 100, 100, 40)]; t ...

  5. java List排序方法 Comparator和Comparable

    今天写的一个程序中需要对一个List进行排序,突然发现自己对这个问题一无所知,于是查阅资料并进行测试,在此做个记录. Collections工具类中有两个方法可以对List进行排序,分别为: publ ...

  6. docker build lnmp(未完成。。。)

    docker pull centos # 拉取镜像到本地 docker run -i -t -p 8000:80 --name=centosDev centos cat /etc/redhat-rel ...

  7. Linux查看某个文件被哪些进程PID占用

    比如查看test.sh这个文件被哪些进程占用,可以用: lsof | grep test.sh 或者 fuser -v test.sh

  8. 3、bootstrap3.0 栅格偏移 布局中的一个特产

    理解了栅格化,那么栅格偏移也相对容易理解了.v3的偏移分别有以下几种: offset:左外边距(margin-left): pull:右位移(right): push:左位移(left). 其中off ...

  9. 学习java随笔第九篇:java异常处理

    在java中的异常处理和c#中的异常处理是一样的都是用try-catch语句. 基本语法如下 try { //此处是可能出现异常的代码 } catch(Exception e) { //此处是如果发生 ...

  10. 一个jquery的图片下拉列表 ddSlick

    [ddSlick]http://designwithpc.com/Plugins/ddSlick How to use with JSON data Include the plugin javasc ...