0 前言

0.0 Spring 来历

  Spring 是于2003年兴起的一个轻量级的Java 开发框架,

  为了解决企业应用开发的复杂性而创建,

  核心是控制反转(IoC)和面向切面编程(AOP)。

  简单来说,Spring是一个分层的Java SE、EE full-stack(一站式)轻量级开源框架。

0.1 Spring 的作用

  Spring 的主要作用就是为代码“解耦”,降低代码间的耦合度。

0.2 系统代码分类

  根据功能不同,可以将一个系统代码分为:

    主业务逻辑:

      代码间逻辑关系紧密,有具体的专业业务应用场景,复用性相对较低。

    系统级业务逻辑:

      功能相对对立,没有具体的专业业务场景,主要是为主业务提供系统级服务,

      如日志、安全、事务等,

      复用性强。

0.3 耦合度分类

  Spring根据代码的功能特点,将降低耦合度的方式分为了两类:

    IoC

      主业务在相互调用过程中,不用再自己维护关系了,不用再自己创建要使用的对象了,

      而是由Spring容器统一管理,自动“注入”。

    AOP

      系统级服务得到了最大复用,

      且不用再由程序员手工将系统级服务“混杂”到主业务逻辑中了,

      而是由Spring 容器统一完成“织入”。

1 Spring 体系结构

  

  Spring 由20多个模块组成,它们可以分为数据访问/集成(Data Acceess/Integration)、Web、面向切面编程(AOP、Aspects)、应用服务器设备管理(Instrumentation)、消息发送(Messaing)、核心容器(Core Container)和测试(Test)。

2 Spring 的下载

  Spring 官网:http://spring.io

  Spring 仓库:https://repo.spring.io/release/org/springframework/spring

  GitHub 主页:https://github.com/spring-projects/spring-framework

  (我反正是用Spring Boot)

3 Spring 4 框架解压目录及jar包说明

  

  

4 Spring 的特点

4.0 非侵入式

  所谓非侵入式是指,Spring 框架的API不会在业务逻辑上出现,即业务逻辑是POJO。

  由于业务逻辑中没有Spring 的API,所以业务逻辑可以从Spring 框架快速的移植到其他框架,

  即与环境无关。

4.1 容器

  Spring 作为一个容器,可以管理对象的声明周期、对象与对象之间的依赖关系,

  可以通过配置文件来定义对象,以及设置与其他对象的依赖关系。

4.2 IoC

  控制反转(Inversion of Control),即创建被调用者的实例不是由调用者完成,而是由Spring 容器完成,并注入调用者。

  当应用了IoC,一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。即,不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

4.3 AOP

  面向切面编程(AOP,Aspect Orient Programming),是一种编程思想,是OOP的补充。

  很多框架都实现了对AOP编程思想的实现。

  Spring 也提供了AOP的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如日志和事务)进行开发。应用对象只实现它们应该做的--完成业务逻辑--仅此而已。它们并不负责其它的系统级关注点,例如日志和事务支持。

  我们可以把日志、安全、事务管理等服务理解成一个“切面”,那么以前这些服务一直是直接写在业务逻辑的代码当中的,这有两点不好:

  首先业务逻辑不纯净;其次这些服务被很多业务逻辑反复使用,完全可以剥离出来形成一个“切面”,以期复用,然后将“切面”动态的“织入”到业务逻辑中,让业务逻辑能够享受到此“切面”的服务。

一、spring 4概述的更多相关文章

  1. Spring Integration概述

    1.   Spring Integration概述 1.1     背景 Spring框架的一个重要主题是控制反转.从广义上来说,Spring处理其上下文中管理的组件的职责.只要组件减轻了职责,它们同 ...

  2. Spring Cloud 概述

    1. Spring Cloud 引言 首先我们打开spring 的官网:https://spring.io/ 我们会看到这样一张图片 这个图片告诉我们,开发我们的应用程序就像盖楼一样, 首先我们需要搭 ...

  3. (转)Spring的概述

    http://blog.csdn.net/yerenyuan_pku/article/details/69663685 Spring的概述 什么是Spring 据度娘所载: Spring是一个开源框架 ...

  4. 微服务与Spring Cloud概述

    微服务与Spring Cloud随着互联网的快速发展, 云计算近十年也得到蓬勃发展, 企业的IT环境和IT架构也逐渐在发生变革,从过去的单体应用架构发展为至今广泛流行的微服务架构. 微服务是一种架构风 ...

  5. Spring IOC 概述

    Spring IOC 概述 IOC(Inversion of Control) 控制反转,也叫 DI(D_ependency injection_) 依赖注入.是一种设计思想.不过我并不同意所谓反转的 ...

  6. 1.Spring 框架概述

    目录 Spring 框架概述 1 我们所说的 "Spring "是什么意思 2. Spring和Spring框架的历史 3. 设计理念 4.反馈和贡献 5.开始使用 Spring ...

  7. Spring JDBC概述

    1.jdbc 概述 Spring JDBC是Spring框架的持久层子框架.用于对数据库的操作(增删改查). 而JdbcTemplate它是spring jdbc子框架中提供的一个操作类,用于对原始J ...

  8. 0000 - Spring Cloud 概述

    1.概述 Spring Cloud是一系列框架的有序集合,它利用Spring Boot的开发便利性简化了分布式系统的开发,比如服务发现.服务网关.服务路由.链路追踪等.Spring Cloud并不重复 ...

  9. (一) Spring基础概述

    1.历史 第一阶段:xml配置 在Spring1.x时代,使用Spring开发满眼都是xml配置的Bean,随着项目的扩大,我们需要把xml配置文件分布放到不同配置文件中,需要频繁的在开发的类和配置文 ...

  10. spring DefaultListableBeanFactory 概述

                 有人说,DefaultListableBeanFactory是spring的发动机,其实重要性不为过.TA的整体类图如下:     这里先概述接口部分:   BeanFact ...

随机推荐

  1. python之迭代器

    原文 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器和带yield的gen ...

  2. Hibernate=====HQL实用技术

    Hibernate支持三种查询语言:HQL查询.Criteria查询和原生SQL查询 HQL(hibernate Query Language,hibernate查询语言)是一种面向对象查询语言,其中 ...

  3. mysql七:索引原理与慢查询优化(待完整)

    一.介绍 索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构.索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要. 索引优化应该是对查询性能优 ...

  4. Centos6配置samba服务器并批量添加用户和文件夹

    一.需求 局域网内有若干用户,所有用户访问一个共享目录 每个用户在共享目录里有自己的文件夹 每个用户都可以读取其他人的文件夹 每个用户只能对自己的文件夹有写入权限 所有用户都属于filesgroup组 ...

  5. qt 创建线程

    http://www.cnblogs.com/xinxue/p/6840315.html Qt 之 QtConcurrent 本文以 Qt 中的 QtConcurrent::run() 函数为例,介绍 ...

  6. ElasticSearch索引快照

    参考文档:https://www.elastic.co/guide/en/elasticsearch/reference/5.1/modules-snapshots.html 备份数据之前,要创建一个 ...

  7. 一个.java源文件中可以有多个类吗?(内部类除外)有什么条件?

    一个.java源文件中可以有多个类吗?(内部类除外)有什么条件?带着这个疑惑,动手建几个测试类, 揭开心中的疑惑.以下是解开疑惑过程: package test;/** * 一个.java源文件中可以 ...

  8. solidity语言10

    pragma solidity ^0.4.16; contract OwnedToken { // TokenCreator是个合约类型,由后面部分定义.只要不用于创建新合约,引用它就好 TokenC ...

  9. Servlet 2.5为cookie配置HTTPOnly属性

    cookie的HTTPOnly属性,主要是用来防止JavaScript来读取cookie,默认情况下,JavaScript可以通过document.cookie来读取cookie,这样是很不安全的.通 ...

  10. pl/sql 存储过程执行execute immediate 卡住

    在存储过程中,执行了create table.update table.insert into table 但是在使用pl/sql的存储过程调试的时候,一有问题就直接卡住(标识:执行中.....) 后 ...