• Spring框架介绍


    Spring 框架宗旨:不重复造轮子,让原有技术使用起来更加方便。

    一、Spring模块

    从Spring3开始,Spring进行了模块化,将原先的一个jar包拆分成很多个jar包,允许你挑选和选择适用于你的模块,不必要把剩余部分也引入。

    Spring 框架(框架是一个半成品)提供约 20 个模块,,这些模块分为核心容器、数据访问/集成、Web、AOP、Instrumentation、消息和测试,可以根据应用程序的要求来使用,如下图所示:

    1. 核心容器

      核心容器由spring-core、spring-beans、spring-context、spring-context-support和spring-expression 5个模块构成。

      spring-core和spring-beans模块为框架提供最基本的功能,包括IoC和依赖注入。BeanFactory是一个工厂的实现类。它可以免除用户手动创建单例类并且对象之间解耦。

      context(spring-core)模块基于spring-beans和BeanFactory两个模块,允许以框架方式访问对象,这类似于JNDI。Context模块继承了Beans模块,并支持国际化、事件传播、资源加载等。Context模块支持Java EE特性,如EJB、JMX、远程访问。spring-context接口是Contet模块的重点。spring-context-support提供将第三方库集成到Spring的功能,如缓存(EhCache,JCache)和任务调度(CommonJ,Quartz)等。

      spring-expression模块提供强有力的在运行时查询和操作对象的语言。这种语言支持获取和设置属性、方法执行、获取数组或集合中的对象、逻辑计算、命名变量,在Spring的IoC容器中获得对象。

      核心容器是Spring 启动最基本的条件。

    2. AOP 和 Instrumentation

      spring-aop模块提供切面编程的实现。可以自定义方法拦截和切入点。

      spring-aspects模块提供与AspectJ的集成。

      spring-instrument模块为特定的服务器提供类加载服务。spring-instrument模块是集成了Tomcat。

    3. Data Access/Integration

      这一层由JDBC、ORM、OXM、JMS、和事物模块组成。

      spring-jdbc模块,主要为了解决数据库繁多的问题,应用此可不需要关注使用的数据库。

      spring-tx模块提供编程式或声明式事务处理。

      spring-orm模块提供流行的对象关系映射的APIs,包含JPA和Hibernate.

      spring-oxm模块提供对Object/XML映射的支持,例如JAXB,Castor,JiBX和XStream。

      spring-jms模块(Java消息服务)包含生成和消费消息的功能。在Spring4.1以后,它集成了spring-messaging模块。

    4. Messaging(消息)

      Spring4提供了spring-messaging模块,主要类有Message,MessageChannel,MessageHandler。这个模块还包含一些映射消息到方法的注解,类似于Spring MVC基于编程模式的注解。

    5. Web

      Web层包含spring-web、spring-webmvc和spring-websocket 3个模块。

      spring-web模块提供面向Web方法的集成特性,例如多部分文件上传、通过监听初始化IoC容器和面向Web的Context,还包含HTTP客户端和对远程的支持。

      spring-webmvc模块(也被称作Web-Servlet模块)包含Spring MVC框架。

      spring-websocket模块提供对socket的全面支持。

    6. Test(测试)

      spring-test模块通过JUnit或者TestNG来对Spring的模块进行单元测试和集成测试。它提供一致的Spring 的ApplicationContexts 和context的缓存。它还提供mock对象让你测试你的代码。

    二、Spring相关jar包

     org.springframework   

     spring-aop   

     基于代理的AOP支持   

     org.springframework   

     spring-aspects   

     基于AspectJ 的切面编程   

     org.springframework   

     spring-beans   

     Beans的支持, 包括 Groovy   

     org.springframework   

     spring-context   

     应用程序运行时上下文,包括调度和远程抽象   

     org.springframework   

     spring-context-support   

     提供第三方库到Spring的支持   

     org.springframework   

     spring-core   

     核心工具类,被其他模块使用   

     org.springframework   

     spring-expression   

     Spring 表达式语言 (SpEL)   

     org.springframework   

     spring-instrument   

     代理JVM相关的   

     org.springframework   

     spring-instrument-tomcat   

     Tomcat的插件   

     org.springframework   

     spring-jdbc   

     提供jdbc的支持,包括数据源和JDBC访问   

     org.springframework   

     spring-jms   

     JMS支持包,包括接收和发送消息类的支持   

     org.springframework   

     spring-messaging   

     对消息传递体系结构和协议的支持   

     org.springframework   

     spring-orm   

     对象/关系  映射, 拨快对JPA 和 Hibernate的支持   

     org.springframework   

     spring-oxm   

     对象/XML 映射的支持   

     org.springframework   

     spring-test   

     对Spring组件单元测试和集成测试的支持   

     org.springframework   

     spring-tx   

     事务支持,包块DAO支持和JCA集成   

     org.springframework   

     spring-web   

     Web 支持,包括客户端和Web访问   

     org.springframework   

     spring-webmvc   

     一个MVC框架   

     org.springframework   

     spring-websocket   

     WebSocket 和SockJS 的实现,包括对STOMP的支持   

    三、Spring核心功能

    1. IoC/DI :控制反转/依赖注入 
    2. AOP:面向切面编程
    3. 声明式事务

    四、Spring各版本的特性

    Spring3.1
    • 添加了引入环境profile功能
    • 添加了@enable注解,使用特定功能
    • 添加了对声明式缓存的支持,能够使用简单的注解声明缓存边界和规则
    • 添加的用于构造器注入的c命名空间,类似与Spring2的p命名空间,用于对应属性注入
    • 开始支持Servlet3.0,包括基于java配置中生命Servlet和Filter,不再只仅仅借助web.xml
    • 改善对于JPA的支持,让JPA能在Spring中完整配置JPA,不必再使用persistence.xml文件
    • 自动绑定路径变量到模型属性中
    • 提供了@RequestMappingProduces和consumes属性,用于匹配请求中的Accept和Content-Type头部信息
    • 提供了@RequestPart注解,用于将Multipart请求中的而某些部分绑定到处理器的方法参数中
    • 持Flash属性,在redirect请求后依然能够存活的属性,flash属性的RedirectAttribute类型
    • 为支持原生的EntityManager,Spring的JpaTemplate和JpaDaoSupport类已被废弃了来支持JPA 2.0,并在spring4中移除了
    Spring3.2
    • @Autowired.@Value和@Bean注解能够作为元注解,用于创建自定义的注入和bean声明注解
    • @DateTimeFormat注解不再依赖JodaTime.如果提供了JodaTime,就会使用它,否则的话,会使用SimpleDateFormat;
    • Spring的声明式缓存提供了对JCache0.5的支持
    • 支持定义全局的格式来解析和渲染日期和时间
    • 在集成测试中,能够配置和加载WebApplicationContext
    • 在集成测试中,能够针对request和session作用域的bean进行测试
    Spring4.0
    • Spring提供了对WebSocket编程的支持,包括支持JSR-356--Java API for WebSocket
    • 鉴于WebSocket仅仅提供了一种低层次的API,急需高层次的抽象,因此Spring4.0在WebSocket之上提供了一个高层次的面向消息的编程模型,
    • 该模型基于SockJS,并且包含了对STOMP协议的支持
    • 新的消息模块,很多的类型来源于Spring Integration项目。这个消息模块支持Spring的SockJS/STOMP功能,同时提供了基于模板的方式发布消息
    • Spring是第一批支持Java8特性的Java框架,比如它所支持的lambda表达式,别的暂且不说,这首先能够让使用特定的毁掉接口更加简洁,代码更加易读
    • 与Java8 同时得到支持的是JSR-310--Date与Time API,在处理时间和日期时,他为开发者提供了java.util.Date或java.util.Calendar更丰富的API
    • 为Groovy开发的应用程序提供了更加顺畅的编程体验,尤其是支持非常便利地完全采用Groovy开发Spring应用程序。随这些一起提供的是来自于Grails
    • 的BeanBuilder,借助它能够通过Groovy配置Spring应用
    • 添加了条件化创建bean的功能,在这里只有开发人员定义的条件满足时,才会创建所声明的bean
    • Spring4.0包含了Spring RestTemplate的一个新的异步实现,它会立即返回并且允许在操作完成后执行回调
    • 添加了对多项JEE规范的支持,包括JMS2.0.JTA1.2.JPA2.1和Bean Validation1.1
    Spring5.0

    Spring Framework 5.0 新特性 (请关注常规升级,说明了一些工具要求的最低版本) 本系列教程以 5.1.16.RELEASE 版本进行说明。

    官网:https://spring.io/projects/spring-framework#learn

    说明文档:https://docs.spring.io/spring/docs/5.1.16.RELEASE/spring-framework-reference/

  • 相关阅读:
    2021.Jan.11.Mon
    Samba
    nfs
    python数据类型(字典dictionary2)
    python数据类型(字典dictionary1)
    python数据类型(元祖tuple)
    python数据类型(列表List2)
    python数据类型(列表List1)
    python数据类型(字符串String2)
    python数据类型(数字Numbers)
  • 原文地址:https://www.cnblogs.com/myitnews/p/11547496.html
Copyright © 2020-2023  润新知