Spring知识整理【一】Spring 入门介绍

来源:互联网 发布:美女网络歌手毛慧 的歌 编辑:程序博客网 时间:2024/06/06 15:01

Spring 入门介绍

1、Spring概述

  • Spring是一个IOC和AOP容器。
  • Spring是分层的JavaSE/EE full-stack(一站式) 轻量级开源框架
    • 分层
      • web层、业务层、数据访问层(持久层/集成层)
      • Struts2/SpringMVC是web层基于MVC设计模式框架
      • Hibernate/MyBatis是持久层的一个ORM的框架
    • 一站式
      • Spring框架有对三层的每层解决方案
      • web层:Spring MVC
      • 持久层:JDBC Template
      • 业务层:Spring的Bean管理

2、Spring特征

  • 非侵入:应用中的对象可以不依赖SpringAPI。
  • 控制反转 [IOC]:
    • 应用本身不负责依赖对象的创建和维护,由Spring容器负责的。
    • 控制权转移到外部容器,反转就是控制权的转移。
  • 依赖注入 [DI]:
    • IOC的经典实现。
    • 运行过程中,由Spring容器动态的将依赖对象注入到组件中。
  • 面向切面 [AOP]:
    • 以动态代理的形式,将原始对象和多个横切关注点封装为一个切面类作为代理对象,每个关注对象体现为一个通知方法。
    • 这样就不用修改受影响的类,业务模块只包含业务代码,利于维护。
  • 组件化:
    • Spring由各个简单的组件,配置组合成复杂的应用。
    • Spring支持XML和注解两种配置组件的方式。
  • 一站式:
    • 在Spring IOC和AOP基础上,可以整合各种企业应用级开源框架和第三方类库。
    • 同时Spring也提供表述层SpringMVC和持久化层SpringJDBC。

3、Spring模块

  • Spring服务是模块化的,可根据应用程序的需求引入不同模块。
    mark

3.1、Test:测试模块 (使用junit)

  • 支持spring组件Junit或者TestNG的单元测试和集成测试。

3.2、Core Container:核心容器 (IOC&DI)

  • Spring-core:
    • 提供框架的基本组成部分,包括IOC和DI依赖注入功能。
  • Spring-bean:
    • 提供BeanFactory,是一个工厂模式的复杂实现。
    • 它是Spring的核心类,负责javaBean的配置与管理。
  • Spring-context:
    • 模块建立在Core和Beans基础上,它是访问定义和配置的对象的媒介,ApplicationContext接口是该模块的重点。
    • 继承BeanFactory类,并且添加了事件处理、国际化、资源装载、透明装载、以及数据校验等功能。
    • 还提供框架式的Bean的访问方式和很多企业级功能,如JNDI访问、支持EJB、远程调用、集成模板框架、Email和定时任务调度等。
  • Spring-expression(SpEL):
    • 在运行时提供强大的表达式语言执行和操作对象视图。它是统一表达式语言规范的拓展。
    • 支持通过名称从IOC容器设置和获取属性值,属性分配,方法调用,访问数组、集合、索引器内容,逻辑和算术运算符,命名变量,取出对象。

3.3、AOP/Instrumentation:

  • Spring-aop:
    • 提供了面向切面的编程实现,允许自定义方法拦截器和切入点,对业务代码进行干净地解耦,实现应该分离的功能。
    • Spring集成了所有AOP功能。通过事务管理可以使任意Spring管理的对象AOP化,不用依赖 EJB 组件。
  • Spring-aspects:
    • 提供了与 AspectJ 的集成,这是一个功能强大且成熟的面向切面编程(AOP)框架。
  • Instrumentation【仪表】:
    • 提供了在某些应用服务器中使用的类仪表支持和类加载器实现。 spring-instrument-tomcat模块包含Spring的Tomcat测试代理。
  • Messaging:
    • 消息传递模块为 STOMP 提供了支持作为在应用程序中 WebSocket 子协议的使用。
    • 它也支持注解编程,模块包含了一系列方法映射消息的annotations(注解)。

3.4、Data Access/Integration【数据访问/集成】:包含JDBC、ORM、OXM、JMS等。

  • Spring-jdbc:
    • 提供了删除冗余的 JDBC 编码的 JDBC 抽象层。不需要对数据库厂商规定的JDBC错误信息编码和解析。
  • Spring-tx:
    • 支持对实现特殊接口和你所有的POJO类的编程和声明式事务管理。
  • Spring-orm:
    • 提供支持对象关系映射实现的API集成层,包括 JPA、JDO、Hibernate 和 iBatis等。
  • Spring-oxm:
    • 提供支持对象和xml映射实现的抽象层,如JAXB、Castor、XMLBeans、JiBx、XStream。
  • Spring-jms:
    • 包含生成和消费消息功能,从spring4.1开始,集成了spring-messaging模块。
  • Spring-transaction:
    • 为实现特殊接口的类及所有的 POJO 支持编程式和声明式事务管理。

3.5、Web模块:

  • Web:
    • 提供基本的面向web的集成功能,比如多文件上传功能、通过servlet监听器和面向web应用程序上下文来初始化IOC容器。
  • Web-MVC【Servlet】:
    • 包含对web应用程序的spring的模型-视图-控制器(MVC)和REST Webservices 实现。
  • Web-Socket:
    • 为 WebSocket-based 提供了支持,在 web 应用程序中提供了客户端和服务器端之间通信的两种方式。
  • Web-Portlet:
    • 提供了在 portlet 环境中使用 MVC的实现,并且反映了 Web-MVC 模块的功能。

4、Spring好处

4.1、Spring优点

  • 方便解耦,简化开发
    • 通过IOC容器,对象间依赖关系由Spring控制,避免硬编码造成的过度程序耦合。用户不必再为单实例模式类、属性文件解析等底层的需求编写代码,更专注于上层的应用。
  • AOP编程的支持
    • 通过AOP功能,方便进行面向切面编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。
  • 声明事物的支持
    • 在Spring中,从单调烦闷的事务管理代码中解脱,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。
  • 方便程序的测试
    • 可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。例如:Spring对Junit4支持,可以通过注解方便的测试Spring程序。
  • 方便集成各种优秀框架
    • Spring不排斥各种优秀的开源框架,可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。
  • 降低Java EE API的使用难度
    Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个封装层,使这些Java EE API的使用难度大为降低。

4.2、使用Spring好处

  • 优点即好处。
  • 降低组件间耦合度,实现软件各层之间的解耦。
  • 容器提供了众多服务,如:事务管理、消息服务等等。不再需要手工控制事务,也不需处理复杂的事务传播。
  • 容器提供单例模式支持,开发人员不再需要自己编写实现代码。
  • 容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能。
  • 容器提供的众多辅作类,使用这些类能够加快应用的开发,如: JdbcTemplate、 HibernateTemplate。
  • Spring对于主流应用框架提供集成支持,如:集成Hibernate、JPA、Struts等,这样更便于应用开发。
原创粉丝点击