一、Spring是什么

Spring是一种多层的J2EE应用程序框架,其核心就是提供一种新的机制管理业务对象及其依赖关系

二、为什么要使用Spring

1. 降低组件之间的耦合度,实现软件各层之间的解耦。  Controller –> Service –> DAO

2. 可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务.也不需处理复杂的事务传播。

3. 容器提供单例模式支持,开发人员不再需要自己编写实现代码。

4. 容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能。

5. 容器提供的众多辅作类,使用这些类能够加快应用的开发,如: JdbcTemplate、 HibernateTemplate。

6. Spring对于主流的应用框架提供了集成支持,如:集成mybaties,Hibernate、JPA、Struts等,这样更便于应用的开发。

三、Spring的核心及其组成

1. 核心就是提供一种新的机制管理业务对象及其依赖关系。IoC(Inversion of Control 控制反转)/ DI (Dependency Injection依赖注入),AOP(面向切面编程)。

1.1 IoC: Inversion of Control (控制反转) : 就是把要在程序中实例化的对象配置到文件中,在程序中不用new来产生,而是让容器通过配置文件返回一个给你,好处就是当需要更改业务逻辑时,方便替换对接口的不同实现类。

1.2 AOP: Aspect Oriented Programming (面向切面编程) 用来在系统中提升业务的分离,把日志、安全、事务等东西和核心业务分离开,甚至核心业务都不知道它们的存在。基本实现就是对相关的方法进行拦截,添加所需的处理动作。

2.  Spring的七大组成模块

四、Spring的特点

1. 轻量级:轻量级是针对重量级容器(EJB)来说的,Spring的核心包就不到1M大小,而使用Spring的核心包所需的资源也很小,所以可以在小型设备中使用。

2. 非入侵式:Spring目标是一个非入侵式的服务框架。原因是所有框架都是提供大量的功能供用户去使用,从而简化开发时间和成本,但由于大量的使用了框架的API,使应用程序和框架发生了大量的依赖性,无法从框架中独立出来,更加无法使程序组件在其他程序 中使用。

3. 容器:

3.1 Spring提供了容器功能,容器可以管理对象的生命周期、对象与对象间的关系、我们可以通过编写XML来设置对象关系和初始值,这样容器在启动之后,所有的对象都直接可以使用,不用编写任何编码来产生对象。

3.2 Spring有两种不同的容器:

3.2.1 Bean工厂(org.springframework.beans.factory.BeanFactory)是最简单的容器(是Spring基本的IOC容器),提供了基础的依赖注入支持

3.2.2 应用上下文(org.springframework.context.ApplicationContext)建立在Bean工厂基础之上,提供了系统构架服务

4. IoC / DI

4.1 Spring最核心的概念就是IoC(控制反转,所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。 ),而他的另一个名字就是DI(依赖注   入,所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。 )。

4.2 使用Spring我们不必在程序中维护对象的依赖关系,只要在XML中设定,Spring容器会自已根据相关的配置去产生他们之间的关系,相当于所有的关系都是在容器运行的时候注入的,而本身他们的关系是没有的。

5. AOP

5.1 Spring最被人重视的另一个方面就是对AOP的支持,其实AOP只是Spring支持的一个子容器

5.2 AOP在一个服务流程中插入与业务逻辑无关的系统服务逻辑,如:日志、权限验证、异常处理、事务等,而把这些独立出来设计成一个对象,这样的对象称为Aspect。

6. 持久层:Spring提供了对持久层的整合,如对JDBC的使用加以封装简化,提供事务功能,对ORM工具如Hibernate等的整合。

7. Web框架整合:Spring也提供了Web的MVC解决方案,可以很好的善用IOC和AOP的功能,可以轻松的替换掉View层,如使用JPS,也可以使用熟悉的web容器,如struts技术与spring整合。

Spring系列(一):Spring的基本概念及其核心的更多相关文章

  1. Spring系列(七) Spring MVC 异常处理

    Servlet传统异常处理 Servlet规范规定了当web应用发生异常时必须能够指明, 并确定了该如何处理, 规定了错误信息应该包含的内容和展示页面的方式.(详细可以参考servlet规范文档) 处 ...

  2. Spring系列之Spring常用注解总结 转载

    Spring系列之Spring常用注解总结   传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.x ...

  3. Spring系列(零) Spring Framework 文档中文翻译

    Spring 框架文档(核心篇1和2) Version 5.1.3.RELEASE 最新的, 更新的笔记, 支持的版本和其他主题,独立的发布版本等, 是在Github Wiki 项目维护的. 总览 历 ...

  4. Spring系列之Spring常用注解总结

    传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ...

  5. Spring系列(一) Spring的核心

    Spring 简介 Spring 是一个开源轻量级企业应用架构,目的是为了简化企业级应用开发.(1)Spring 框架可以帮我们管理对象的生命周期,帮助我们管理对象间的依赖关系,相互协作:(2)Spr ...

  6. 【Spring系列】Spring mvc整合redis(非集群)

    一.在pom.xml中增加redis需要的jar包 <!--spring redis相关jar包--> <dependency> <groupId>redis.cl ...

  7. Spring 系列之Spring常用注解总结

    传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.实物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文 ...

  8. Spring系列(六) Spring Web MVC 应用构建分析

    DispatcherServlet DispatcherServlet 是Spring MVC的前端控制器名称, 用户的请求到达这里进行集中处理, 在Spring MVC中, 它的作用是为不同请求匹配 ...

  9. 【Spring系列】Spring IoC

    前言 IoC其实有两种方式,一种是DI,而另一种是DL,即Dependency Lookup(依赖查找),前者是当前软件实体被动接受其依赖的其他组件被IOc容器注入,而后者是当前软件实体主动去某个服务 ...

  10. 【Spring系列】Spring AOP面向切面编程

    前言 接上一篇文章,在上午中使用了切面做防重复控制,本文着重介绍切面AOP. 在开发中,有一些功能行为是通用的,比如.日志管理.安全和事务,它们有一个共同点就是分布于应用中的多处,这种功能被称为横切关 ...

随机推荐

  1. pandas数组(pandas Series)-(1)

    导入pandas import pandas as pd countries = ['Albania', 'Algeria', 'Andorra', 'Angola', 'Antigua and Ba ...

  2. 【教程】ubuntu下配置nvc详细教程

    Preface 虽然以前在windows上远控linux都是用的FTP+CRT,不过有些时候还是不太方便,比如不能用IDE对程序进行调试,现在就来配置下VNC,过程中出了些错误,上网查询时发现很多解决 ...

  3. 歌曲播放页面的数据vuex管理

    1.state.js import {playMode} from '@/common/js/config' const state = { singer:{}, playing:false, ful ...

  4. MATLAB中-27开3次方得不到-3的原因

    原代码: y=@(x) x.^(/); 运行结果: >> y(-27) ans = 1.5000 + 2.5981i 原因: 用(-8)^(1/3)时,matlab其实是调用C = pow ...

  5. LeetCode: 【L4】N-Queens 解题报告

    [L4]N-Queens 解题报告 N-Queens Total Accepted: 16418 Total Submissions: 63309 My Submissions The n-queen ...

  6. Linux下字符集的安装

    目前环境中经常会遇到编码转化的问题,UTF-8跟GB2312也有问题.只得在Linux上安装GB2312(在Linux操作系统上又称zh_CN.GB2312)的字符集,具体请看下文. Linux下几个 ...

  7. Auty 2017——WebMonitor接口线上检测平台

    [本文出自天外归云的博客园] Auty 2017——WebMonitor接口检测平台 前篇 接口本地检测平台 本篇 接上篇,在本地检测平台的基础上,去掉本地服务,改功能为线上使用.好处是项目可以多人访 ...

  8. 如何搭建iOS项目基本框架

    今天我们来谈谈如何搭建框架,框架需要做一些什么. 第一步:找到我们的目标我们的目标是让其他开发人员拿到手后即可写页面,不再需要考虑其他的问题. 第二步:我们需要做哪些东西各位跟着我一步一步来进行. 假 ...

  9. virtualbox问题收集

    The VM session was closed before any attempt to power it on. 返回 代码:E_FAIL (0x80004005)组件:SessionMach ...

  10. [转]我的MYSQL学习心得(六) 函数

    这一节主要介绍MYSQL里的函数,MYSQL里的函数很多,我这里主要介绍MYSQL里有而SQLSERVER没有的函数 数学函数 1.求余函数MOD(X,Y) MOD(X,Y)返回x被y除后的余数,MO ...