Spring简介

Spring是一个开源、轻量级框架。在诞生之初,创建Spring的主要目的是用来替代更加重量级的企业级Java技术,尤其是EJB(Enterprise JavaBean)。从最初的挑战者,到现在诸多标准的制定者;从传统的JEE应用,到大数据、NoSQL、企业应用集成、批处理、移动开发等领域,Spring都在参与和发挥影响力。

Spring的目标

Spring致力于简化企业级Java开发,促进代码的松散耦合。成功的关键在于IOC和AOP。它采取4种关键策略:

  1. 基于POJO(简单老式Java对象 Plain Old Java object)的轻量级和最小侵入性编程

    • Spring不会强迫你实现Spring规范的接口或继承Spring规范的类
    • 在基于Spring构建的应用中,它的类通常没有任何痕迹表明你使用了Spring,它依旧是POJO
  2. 通过依赖注入和面向接口实现松耦合
    • 不同的类必须以适当的方式进行交互来完成有实际意义的功能,所以耦合是必须的,但是需要谨慎管理
    • 依赖注入会将所依赖的关系自动交给目标对象,而不是让对象自己去获取依赖
  3. 基于切面和惯例进行声明式编程
    • AOP以声明的方式将服务模块化并应用到他们需要影响的组件中去,使这些组件具有高内聚性并更加关注自身业务,确保POJO的简单性。
  4. 通过切面和模板减少样板式代码
    • Spring通过模板封装来消除样板式代码(大量重复代码)

Spring容器

容器是Spring框架的核心。在Spring应用中,对象由Spring容器创建和装配,并存在容器之中 。

  1. Spring实现了多个容器,主要有两种,bean工厂(由org.springframework.beans.factory.beanFactory接口定义)和应用上下文(由org.springframework.context.ApplicationContext接口定义)。我们使用更高级的后者。
  2. Spring自带了多种类型的应用上下文,比如从文件系统下的一个或多个XML配置文件中加载上下文定义使用FileSystemXmlapplicationcontext。
  3. 创建Spring容器:ApplicationContext context
  4. 从类路径下的一个或多个XML配置文件中加载应用上下文:ApplicationContext context = new ClassPathXmlApplicationContext("example.xml");

Spring模块

在Spring 5.0 中,Spring框架的发布版本包括了21个不同的模块,每个模块会有3个JAR文件(二进制类库、源码的JAR文件以及JavaDoc的JAR文件)Spring模块根据功能划分为6类不同的功能。

  1. Spring核心容器
    容器是Spring框架最核心的部分,它管理着Spring应用中bean的创建、配置和管理。包括bean工厂和应用上下文。还包括一些企业服务,如E-mail、JNDI访问、EJB集成与调度。所有的Spring模块都构建于核心容器之上。
  2. Spring的AOP模块
    与DI一样,AOP可以帮助应用对象解耦。借助于AOP,可以将遍布系统的关注点(例如事务和安全)从它们所应用的对象中解耦出来。
  3. 数据访问与集成
    Spring的JDBC和DAO(Data Access Object)模块抽象了样板式代码,并在多种数据库服务的错误信息之上构建了一个语义丰富的异常层。Spring的ORM模块对许多流行的ORM框架进行了集成,包括Hibernate、Java Persistence API、Java Data Object和iBATIS SQL Maps。
  4. Web与远程调用
    Spring能够与多种流行的MVC框架进行集成,同时,它的Web和远程调用模块自带了一个强大的MVC框架,有助于在Web层提升应用的松耦合水平。
  5. Instrumentation
    Spring的Instrumentation模块提供了为JVM添加代理(agent)的功能,使用场景非常有限。
  6. 测试
    Spring为使用JNDI、Servlet和Portlet编写单元测试提供了一系列的 mock对象实现。对于集成测试,该模块为加载Spring应用上下文中的bean集合以及与Spring上下文中的bean进行交互提供了支持。

参考书籍

《Spring IN ACTION》

Spring核心简介的更多相关文章

  1. Spring 系列: Spring 框架简介 -7个部分

    Spring 系列: Spring 框架简介 Spring AOP 和 IOC 容器入门 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级 ...

  2. Spring 系列: Spring 框架简介(转载)

    Spring 系列: Spring 框架简介 http://www.ibm.com/developerworks/cn/java/wa-spring1/ Spring AOP 和 IOC 容器入门 在 ...

  3. Spring AOP 简介

    Spring AOP 简介 如果说 IoC 是 Spring 的核心,那么面向切面编程就是 Spring 最为重要的功能之一了,在数据库事务中切面编程被广泛使用. AOP 即 Aspect Orien ...

  4. Spring Boot 简介

    作者其他Spring系列文章 Spring Framework简介 Spring框架快速入门  Spring Boot愿景 Spring Boot愿景就是让我们创建可运行的.独立的.基于Spring的 ...

  5. Spring Boot从入门到精通之:一、Spring Boot简介及快速入门

    Spring Boot Spring Boot 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来 ...

  6. Spring Boot基础:Spring Boot简介与快速搭建(1)

    1. Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的创建.运行.调试.部署等. Spring Boot默认使用tomca ...

  7. 1. Spring 框架简介及官方压缩包目录

    一.Spring 框架简介及官方压缩包目录介绍 1.主要发明者:Rod Johnson 2.轮子理论推崇者:     2.1 轮子理论:不用重复发明轮子.     2.2 IT 行业:直接使用写好的代 ...

  8. Spring Cloud与微服务构建:Spring Cloud简介

    Spring Cloud简介 微服务因该具备的功能 微服务可以拆分为"微"和"服务"二字."微"即小的意思,那到底多小才算"微&q ...

  9. Spring.Net框架一:Spring.Net简介

    一.Spring.Net简介 Spring.NET为建立企业级应用提供了一套轻量级的解决方案.通过Spring.NET,我们可以用统一且透明的方式来配置应用程序.Spring.NET的重点是为中间层提 ...

随机推荐

  1. Shader2.0常用语义

    POSITION: 获取模型顶点的信息.NORMAL: 获取法线信息TEXCOORD(n):        高精度的从顶点传递信息到片段着色器COLOR:     表示低精度从顶点传递信息到片段着色器 ...

  2. RobotFrameWork(一)robotfamework(python版)及Ride在windows安装

    1.windows下的安装 (1)准备条件: python-2.7.3.msi robotframework-2.7.5.win32.exe wxPython2.8-win32-unicode-2.8 ...

  3. ssh无秘钥登录

    服务器1:172.16.20.136 服务器2:172.16.20.134 在服务器2上输入:ssh-keygen -t rsa           (一路回车) scp /root/.ssh/id_ ...

  4. 利用Oracle GoldenGate记录源系统所有表的操作

    通过goldengate,可以实现目标表和源表不同结构之间的实时复制,包括记录源系统所有表的变更操作,供ETL或其它审计系统使用. 记录信息包括表名.操作时间.操作SCN,事务标记,操作类型到一个流水 ...

  5. Wisdom RESTClient支持自动化测试并可以生成API文档

    Wisdom REST Client V1.2 支持自动化测试RESTful API并生成精美的测试报告,同时基于历史数据自动生成精美的RESTful API文档. 工具地址:https://gith ...

  6. TF-IDF基本原理

    1.TF-IDF介绍 TF/IDF(term frequency–inverse document frequency)用以评估字词 对于一个文件集其中一份文件的重要程度.字词的重要性随着它在文件中出 ...

  7. OpenStack平台上,linux云主机可以使用xshell连接,但是无法xftp连接

    笔者在OpenStack云平台上创建了CentOS6.6的云主机,用了一段时间后,发现xshell可以连接,但是xftp却连接不上. 于是进行伟大的百度操作,检查网络设置.ssh服务设置等,均正常,否 ...

  8. QQ项目

    QQ第一部分: 1.数据库 每一个QQ账户必须有  a. state:是否上线的状态  b. IP:正在上线的主机的IP  c. port:UDP端口号(用这个和别的好友通讯)  注:TCP连接时,在 ...

  9. 计算概论(A)/基础编程练习1(8题)/1:大象喝水

    #include<stdio.h> int main() { ; // n < 100 scanf("%d", &n); // 循环遍历判断 再进行平方和 ...

  10. 基于SecureCRT的测试环境的克隆的linux/vi相关命令

    #chmod -R 777*; 参数-R:对当前目录下的所有档案与子目录进行相同的权限 变更(即以递归的方式逐个变更). *:通配符,指的是当前目录下的所有文件及目录. 所有文件及其子目录的文件拥有者 ...