http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#overview-maven-bom
Spring框架提供了大概20个模块,分类为:Core Container, Data Access/Integration, Web, AOP (Aspect Oriented Programming)Instrumentation, Messaging, and Test
1、Core Container包含:spring-core, spring-beans, spring-context, spring-context-support, and spring-expression 模块。
①spring-core, spring-beans是Spring框架的基础,提供了IoC和DI功能。spring-beans中的BeanFactory是工厂模式的实现。
②spring-context模块基于spring-core、spring-beans,是一种框架式访问对象的方法,类似JNDI注册方式。
还添加了国际化支持、事件传播支持、资源加载支持、上下文的创建支持等等。还有JavaEE的部分功能。
ApplicationContext接口是该模块的核心。
③spring-context-support模块则提供了集成通用第三方库的支持,将其集成到Spring应用上下文中,如缓存、邮件、计划、模板引擎。
④spring-expression模块提供了可在运行时查询和操作对象图的表达式语言,很强大。是对JSP中unified EL的扩展。
支持:设置/获取属性值,属性分配,方法调用,访问数组、集合及索引的内容,逻辑和数字运算符,命名变量,通过名字在Spring IoC容器中获取对象。
2、AOP and Instrumentation包含:
①spring-aop模块提供了AOP编程,允许定义方法拦截器和切入点,以与具体的功能代码解耦合。
②spring-aspects模块集成了AspectJ。
③spring-instrument模块,提供了类工具支持和类加载器实现,用于特定的应用服务器。
④spring-instrument-tomcat模块,包含了对tomcat的代理。
3、Messaging
Spring Framework 4 包含了spring-messaging模块,带有Spring Integration项目的关键抽象,如Message、MessageChannel、MessageHandler以及其他,以作为基于消息的应用的基础。 
也提供了一些注解,可以将消息发送到方法中。
4、Data Access/Integration,包含JDBC、ORM、OXM、JMS和Transaction模块。
①spring-jdbc模块,提供了JDBC抽象层,免除了繁杂的JDBC编码和不同数据库开发商错误代码的分析。
②spring-tx模块,允许代码式和声明书事务管理。(需要实现特定接口,支持所有POJO??)
③spring-orm模块,提供了对常见ORM的集成层,常见ORM包括JPA、JDO和Hibernate。通过使用该模块,你既可以使用ORM的功能,也可以使用Spring提供的功能,例如简单的声明式事务管理。
④spring-oxm模块,提供了抽象层,支持Object/XML映射实现 如JAXB、Castor、XMLBeans、JiBX和XStream。
⑤spring-jms模块,包含了生产和消费消息功能,集成了spring-messaging模块。
5、Web,包含spring-web, spring-webmvc, spring-websocket, and springwebmvc-portlet模块。
①spring-web模块,提供了基本的web功能,如文件上传、使用Servlet Listeners初始化IoC容器、web容器。同样包含了一个HTTP客户端和Spring远程支持的web部分。
②spring-webmvc模块,包含了MVC和REST Web Service实现。
③spring-webmvc-portlet模块,提供了用于Portlet环境的MVC实现,镜像了spring-webmvc模块的功能。
6、Test
spring-test模块,支持Spring组件的单元测试和集成测试,使用JUnit或者TestUG。提供了Spring ApplicationContext的加载及缓存。还提供了mock对象!
技巧
通过使用Spring BOM,在 dependencyManagement 导入spring-framework-bom ,然后就可以保证所有的Spring依赖都是同一个版本 -- 可以不用再声明版本了。
<dependencyManagement><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-framework-bom</artifactId><version>4.3.3.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId></dependency>
<dependencies>

Logging,这是Spring唯一强转要求的外部依赖,JCL。
关掉JCL:从spring-core模块中排除依赖。或者,选一个依赖取代JCL。
<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.3.RELEASE</version><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency>
</dependencies>

至此,已经破坏了应用(不能运行了),所以还需要修复一下。使用JCL的其他实现例如SLF4J。

SLF4J,是编译时绑定,而不是运行时判断,所以更干净。(应该是指在编译时就判断是否需要相应的代码,不需要就去掉)
但是,有一些容器内置了JCL的实现,这时单纯的排除依赖是不够的。这时候最好的办法是反转类加载器层次,让应用控制JCL依赖,而非容器控制。(如IBM的WebSphere Application Server。知道就行,略过。)
4.0 版本的改进(摘录):
  1. 注入bean时,支持泛型限定。如 @Autowired Repository<Customer> customerRepository  。
  2. CGLIB-based proxy classes 不再需要一个默认构造器。
  3. 新的 @RestController 注解。
4.1 版本的改进(摘录):
  1. 用Jackson支持JSONP。
  2. 新的lifecycle,允许拦截 @ResponseBody@ResponseEntity 方法,在controller返回之后,但写入响应之前。
  3. 新的HttpMessageConverter选项:通过 jackson-dataformat-xml扩展开启基于Jackson的XML序列化支持。如果存在 jackson-dataformat-xml,将取代 JAXB2。
4.2 版本的改进(摘录):
  1. 可以使用Java 8的默认方法来编写配置文件,@Bean 默认方法。
  2. @Import 支持导入常规类作为bean,而不仅仅是配置类了。
  3. 内建的CORs支持,包含全局的(MVC Java config和 XML namespace)和局部的(如@CrossOrigin)配置。
  4. 默认的JSON前缀,由 "{} && " 改成更安全的 ")]}', " 。
4.3 版本的改进(摘录):
  1. Java 8 的默认方法可以用作bean属性的GETTER/SETTER。
  2. 如果目标bean只定义了一个构造方法,就不再需要@Autowired 注解了。
  3. 内建了对 HTTP HEAD and HTTP OPTIONS 的支持。
  4. @RequestMapping 新的组合注解:@GetMapping@PostMapping@PutMapping@DeleteMapping, and @PatchMapping

  5. 新的组合注解:@RequestScope, @SessionScope, and @ApplicationScope

  6. 新的 @RestControllerAdvice 注解。

  7. 新的 @SessionAttribute 和 @RequestAttribute 注解。

  8. @

    ModelAttribute allows preventing data binding via binding=false attribute (see reference).

  9. @

    PathVariable may be declared as optional (for use on @ModelAttribute methods).

  10. HTTP消息转换器中一致的charset处理,包括multipart文本内容默认的UTF-8编码。

  11. 静态资源处理使用配置好的ContentNegotiationManager ,来决定媒体类型。

转载于:https://www.cnblogs.com/larryzeal/p/5895240.html

Spring Framework 官方文档学习(一)介绍相关推荐

  1. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(二)

    接前一篇 Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 本篇主要内容:Spring Type Conver ...

  2. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion

    本篇太乱,请移步: Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 写了删删了写,反复几次,对自己的描述很不 ...

  3. Spring Framework 官方文档学习(三)之Resource

    起因 标准JDK中使用 java.net.URL 来处理资源,但有很多不足,例如不能限定classpath,不能限定 ServletContext 路径. 所以,Spring提供了 Resource ...

  4. Spring Boot 官方文档学习(一)入门及使用

    Spring Boot 官方文档学习(一)入门及使用 个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问 ...

  5. Spring 4 官方文档学习 Spring与Java EE技术的集成

    本部分覆盖了以下内容: Chapter 28, Remoting and web services using Spring -- 使用Spring进行远程和web服务 Chapter 29, Ent ...

  6. Spring 4 官方文档学习(十一)Web MVC 框架之异常处理

    1.HandlerExceptionResolver Spring HandlerExceptionResolver的实现们会处理controller执行过程中发送的unexpected except ...

  7. Spring指南之使用Spring缓存数据(Spring Framework官方文档之缓存抽象详解)

    1.请参见官方文档Spring指南之使用 Spring 缓存数据 2.请参见Spring官方文档之缓存抽象 3.参见github代码 文章目录 一.简介 二.你将创造什么(What You Will ...

  8. Spring 4 官方文档学习(十)数据访问之JDBC

    说明:未修订版,阅读起来极度困难 1.Spring框架JDBC的介绍 Spring JDBC - who does what? 动作 Spring 你 定义连接参数   是 打开连接 是   指定SQ ...

  9. Spring Data Commons 官方文档学习

    Spring Data Commons 官方文档学习   -by LarryZeal Version 1.12.6.Release, 2017-07-27 为知笔记版本在这里,带格式. Table o ...

  10. 【Spring Boot官方文档原文理解翻译-持续更新中】

    [Spring Boot官方文档原文理解翻译-持续更新中] 文章目录 [Spring Boot官方文档原文理解翻译-持续更新中] Chapter 4. Getting Started 4.1. Int ...

最新文章

  1. mysql根据两列去重复_mysql对两列去重复数据库
  2. iOS自动布局框架-Masonry详解
  3. Python--day46--MySQL视图
  4. core文件怎么分析_c++ crash 分析工具:breakpad
  5. 全球通吃的九大黄金专业
  6. 十三、PHP框架Laravel学习笔记——构造器的 where 派生查询
  7. shell函数可接受不同参数
  8. [转]vs2010 MSDN文档安装方法
  9. CentOS6的python2.6升级到python2.7以上版本(可能更详细)
  10. 种草功能在电商app源码中发挥的作用和价值
  11. php调用pentaho,Pentaho数据源和查询
  12. 计算机竞赛制作机器人,2016全国中小学电脑制作比赛机器人灭火竞赛规则
  13. Android虚拟机、模拟器识别
  14. 关于电商库存扣减的解决方案
  15. 劲霸男装四十年:“真男人”成“老男人”还能如何劲霸?
  16. Parent directory of crack_capcha.model doesn't exist, can't save. (tensorflow 报错)
  17. 为保证系统的可用性的事前事中事后
  18. 全新UI运营级在线客服系统源码+无授权/带教程
  19. opm openresty的包管理器-中文文档
  20. pandas 第十二期组队-pandas基础

热门文章

  1. 机器人 林州重机_林州重机定增11亿 进军油服和机器人行业
  2. 选择合适的回归损失函数
  3. Docker操作命令——查看、停止、删除容器
  4. 解决在使用pip进行安装时的Could not install packages due to an EnvironmentError的问题
  5. simhash与minhash
  6. 不同数据库限制取前N条记录
  7. cmake ..是什么意思
  8. pycharm windows 如何导入github仓库的项目代码
  9. mybatis的缓存基础
  10. redlock java_用redlock实现redis的分布式锁