April 21, 2024
1\. IOC容器 这章重点说明IOC容器. 1.1. Spring IoC容器和bean的介绍 本章介绍Spring框架中控制反转 的实现. IOC与大家熟知的依赖注入同理,指的是对象仅通过构造函数参数、工厂方法的参数或在对象实例构造以后或从工厂方法返回以后,在对象实例上设置的属性来定义它们的依赖关系(即它们使用的其他对象). 然后容器在创建bean时注入这些需要的依赖。 这个过程基本上是bean本身的逆过程(因此称为IOC),通过使用类的直接构造或服务定位器模式等机制来控制其依赖项的实例化或位置。 `org.springframework.beans` 和 `org...
April 20, 2024
3\. Spring AOP APIs 前一章介绍了Spring使用@AspectJ和基于schema的切面定义对AOP的支持。 在本章中,将讨论Spring 1.2应用程序中使用的较底层的Spring AOP API和AOP支持。 对于新的应用程序,推荐使用前一章中介绍的Spring 2.0和更高版本的AOP支持,但是在使用现有应用程序或阅读书籍和文章时,您可能会遇到Spring 1.2方式的示例. Spring 5仍然向后兼容了Spring 1.2。本章中描述的所有内容在Spring 5中都得到了完全支持。 3.1. Spring中的切点API 本节描述了Spri...
April 20, 2024
2\. 使用Spring面向切面编程 面向切面编程(Aspectoriented Programming 简称AOPAOP) ,是相对面向对象编程(Objectoriented Programming 简称OOP)的框架,作为OOP的一种功能补充. OOP主要的模块单元是类(class)。而AOP则是切面(aspect)。切面会将诸如事务管理这样跨越多个类型和对象的关注点模块化(在AOP的语义中,这类关注点被称为横切关注点(crosscutting))。 AOP是Spring框架重要的组件,虽然Spring IoC容器没有依赖AOP,因此Spring不会强迫开发者使用AOP。但AO...
April 19, 2024
4\. 资源 本章介绍Spring如何处理资源以及如何在Spring中使用资源。 它包括以下主题: 4.1. 简介 遗憾的是,Java的标准`java.net.URL`类和各种 `URL`前缀的标准处理程序不足以完全访问底层资源。例如,没有标准化的 `URL`实现可用于访问需要从类路径或相对于 `ServletContext`获取的资源。 虽然可以为专用 `URL`前缀注册新的处理程序(类似于`http:` :)这样的前缀的现有处理程序,但这通常非常复杂,并且`URL`接口仍然缺少一些理想的功能,例如检查...
April 19, 2024
1\. Spring Web MVC Spring Web MVC是构建在Servlet API上的原始Web框架,从一开始就包含在Spring Framework中。 正式名称 “Spring Web MVC,” 来自其源模块()的名称,但它通常被称为“Spring MVC”。 与Spring Web MVC并行,Spring Framework 5.0引入了一个反应堆栈Web框架,其名称“Spring WebFlux,”也基于其源模块()。 本节介绍Spring Web MVC。 将介绍Spring WebFlux。. 有关基本信息以及与Servlet容器和Java EE版本...
April 19, 2024
1. REST Clients Spring Framework 为调用 REST 端点提供了以下选择: 具有非阻塞、响应式的流式 API 客户端。 具有 template method API 的同步客户端. 具有生成的动态代理实现的注解接口。 1.1. WebClient WebClient 是一个非阻塞的、响应式的客户端,用于执行 HTTP 请求。 它在 5.0 中引入,提供了 RestTemplate 的替代方案,支持同步、异步和流式场景。 WebClient 支持以下内容: 非阻塞 I/O。 Reactive Streams 背压. 高并发,硬件...
April 12, 2024
6\. 执行任务和任务计划 Spring框架分别为异步执行、`TaskExecutor`的任务调度和`TaskScheduler`接口提供了抽象。Spring还具有支持线程池或委派到应用程序服务器环境CommonJ的接口实现。最终, 在Java SE 5、Java SE 6和Java EE有差异的环境都实现了一套公共的抽象接口。 Spring还具有集成类,支持使用`Timer`(JDK自1.3以来的一部分)和Quartz Scheduler()进行调度。 您可以使用`FactoryBean`同时分别对`Timer`或`Trigger`实例进行可选引用来设置这两个调度程序。 此外,还...
April 11, 2024
5\. 缓存抽象 从3.1版本开始,Spring框架为在现有的Spring应用程序透明地添加缓存提供了支持。 与支持类似,缓存抽象允许一致地使用各种缓存解决方案,而对代码的影响最小。 从Spring 4.1开始,通过和更多自定义选项的支持,缓存抽象得到了显着改进。 5.1. 了解缓存抽象 Cache vs Buffer 术语“buffer” 和 “cache,”倾向于可互换使用。 但请注意,它们代表不同的东西。 缓冲区通常用作快速和慢速实体之间的数据的中间临时存储区。由于一方必须等待另一个影响性能的因素, 因此缓冲区会通过允许整个数据块同时移动, 而不是一小块来缓解这一...
April 10, 2024
本部分将介绍 Spring Boot 相关的细节内容. 在这里,您可以学习到可能需要使用和自定义的主要功能. 您如果还没有做好充分准备,可能需要阅读 "" 和 "" ,以便打下前期基础. 1\. SpringApplication `SpringApplication` 类提供了一种可通过运行 `main()` 方法来启动 Spring 应用的简单方式. 大多数情况下,您只需要委托给静态的 `SpringApplication.run` 方法: Java Kotlin @SpringBootApplication public class MyApplicatio...