Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a6e70af

Browse files
committed
Update spring-`boot- features section
1 parent 4f1df2a commit a6e70af

File tree

2 files changed

+106
-1
lines changed

2 files changed

+106
-1
lines changed

SUMMARY.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,5 +122,11 @@
122122
- [28.4.2、Servlet 上下文初始化](pages/spring-boot-features.md#boot-features-embedded-container-context-initializer)
123123
- [28.4.2.1、扫描 Servlet、Filter 和 Listener](pages/spring-boot-features.md#boot-features-embedded-container-servlets-filters-listeners-scanning)
124124
- [28.4.3、ServletWebServerApplicationContext](pages/spring-boot-features.md#boot-features-embedded-container-application-context)
125+
- [28.4.4、自定义内嵌 Servlet 容器](pages/spring-boot-features.md#boot-features-customizing-embedded-containers)
126+
- [28.4.4.1、以编程方式自定义](pages/spring-boot-features.md#boot-features-programmatic-embedded-container-customization)
127+
- [28.4.4.2、直接自定义 ConfigurableServletWebServerFactory](pages/spring-boot-features.md#boot-features-customizing-configurableservletwebserverfactory-directly)
128+
- [28.4.5、JSP 局限](pages/spring-boot-features.md#boot-features-jsp-limitations)
129+
- [28.5、内嵌响应式服务器支持](pages/spring-boot-features.md#boot-features-reactive-server)
130+
- [28.6、响应式服务器资源配置](pages/spring-boot-features.md#boot-features-reactive-server-resources)
125131

126132

pages/spring-boot-features.md

Lines changed: 100 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1032,7 +1032,7 @@ public class JerseyConfig extends ResourceConfig {
10321032

10331033
**警告**
10341034

1035-
> Jersey 对于扫描可执行归档文件的支持是相当有限的。例如,它无法扫描一个[完整的可执行 jar 文件](#deployment-install)中的端点,同样,当运行一个可执行的 war 文件时,它也无法扫包中 `WEB-INF/classes` 下的端点。为了避免该限制,您不应该使用 `packages` 方法,应该使用上述的 `register` 方法来单独注册每一个端点。
1035+
> Jersey 对于扫描可执行归档文件的支持是相当有限的。例如,它无法扫描一个[完整的可执行 jar 文件](#deployment-install)中的端点,同样,当运行一个可执行的 war 文件时,它也无法扫描包中 `WEB-INF/classes` 下的端点。为了避免该限制,您不应该使用 `packages` 方法,应该使用上述的 `register` 方法来单独注册每一个端点。
10361036
10371037
您可以注册任意数量实现了 `ResourceConfigCustomizer` 的 bean,以实现更高级的定制化。
10381038

@@ -1124,4 +1124,103 @@ Spring Boot 底层使用了一个不同的 `ApplicationContext` 类型来支持
11241124

11251125
> 通常,你不需要知道这些实现类。大部分应用程序会自动配置,并为您创建合适的 `ApplicationContext``ServletWebServerFactory`
11261126
1127+
<a id="boot-features-customizing-embedded-containers"></a>
1128+
1129+
##### 28.4.4、自定义内嵌 Servlet 容器
1130+
1131+
可以使用 Spring `Environment` 属性来配置通用的 servlet 容器设置。通常,您可以在 `application.properties` 文件中定义这些属性。
1132+
1133+
通用的服务器设置包括:
1134+
1135+
- 网络设置:监听 HTTP 请求的端口(`server.port`),绑定接口地址到 `server.address` 等。
1136+
- 会话设置:是否持久会话(`server.session.persistence`)、session 超时(`server.session.timeout`)、会话数据存放位置(`server.session.store-dir`)和 session-cookie 配置(`server.session.cookie.*`)。
1137+
- 错误管理:错误页面位置(`server.error.path`)等。
1138+
- [SSL](#howto-configure-ssl)
1139+
- [HTTP 压缩](#how-to-enable-http-response-compression)
1140+
1141+
Spring Boot 尽可能暴露通用的设置,但并不总是都可以。针对这些情况,专用的命名空间为特定的服务器提供了自定义功能(请参阅 `server.tomcat``server.undertow`)。例如,您可以使用内嵌 servlet 容器的特定功能来配置[访问日志](#howto-configure-accesslogs)
1142+
1143+
**提示**
1144+
1145+
> 有关完整的内容列表,请参阅 [ServerProperties](https://github.com/spring-projects/spring-boot/tree/v2.1.1.RELEASE/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/ServerProperties.java) 类。
1146+
1147+
<a id="boot-features-programmatic-embedded-container-customization"></a>
1148+
1149+
###### 28.4.4.1、以编程方式自定义
1150+
1151+
如果您需要以编程的方式配置内嵌 servlet 容器,可以注册一个是实现了 `WebServerFactoryCustomizer` 接口的 Spring bean。`WebServerFactoryCustomizer` 提供了对 `ConfigurableServletWebServerFactory` 的访问入口,其中包含了许多自定义 setter 方法。以下示例使用了编程方式来设置端口:
1152+
1153+
```java
1154+
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
1155+
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
1156+
import org.springframework.stereotype.Component;
1157+
1158+
@Component
1159+
public class CustomizationBean implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
1160+
1161+
@Override
1162+
public void customize(ConfigurableServletWebServerFactory server) {
1163+
server.setPort(9000);
1164+
}
1165+
1166+
}
1167+
```
1168+
1169+
**注意**
1170+
1171+
> `TomcatServletWebServerFactory``JettyServletWebServerFactory``UndertowServletWebServerFactory` 是 ConfigurableServletWebServerFactory 的具体子类,它们分别为 Tomcat、Jetty 和 Undertow 提供了额外的自定义 setter 方法。
1172+
1173+
1174+
<a id="boot-features-customizing-configurableservletwebserverfactory-directly"></a>
1175+
1176+
###### 28.4.4.2、直接自定义 ConfigurableServletWebServerFactory
1177+
1178+
如果上述的自定义方式太局限,您可以自己注册 `TomcatServletWebServerFactory``JettyServletWebServerFactory``UndertowServletWebServerFactory` bean。
1179+
1180+
```java
1181+
@Bean
1182+
public ConfigurableServletWebServerFactory webServerFactory() {
1183+
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
1184+
factory.setPort(9000);
1185+
factory.setSessionTimeout(10, TimeUnit.MINUTES);
1186+
factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/notfound.html"));
1187+
return factory;
1188+
}
1189+
```
1190+
1191+
Setter 方法提供了许多配置选项。还有几个 **hook** 保护方法供您深入定制。有关详细信息,请参阅[源码文档](https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/api/org/springframework/boot/web/servlet/server/ConfigurableServletWebServerFactory.html)
1192+
1193+
<a id="boot-features-jsp-limitations"></a>
1194+
1195+
#### 28.4.5、JSP 局限
1196+
1197+
当运行使用了内嵌 servlet 容器的 Spring Boot 应用程序时(打包为可执行归档文件),JSP 支持将存在一些限制。
1198+
1199+
- 如果您使用 war 打包,在 Jetty 和 Tomcat 中可以正常工作,使用 `java -jar` 启动时,可执行的 war 可正常使用,并且还可以部署到任何标准容器。使用可执行 jar 时不支持 JSP。
1200+
- Undertow 不支持 JSP。
1201+
- 创建自定义的 error.jsp 页面不会覆盖默认[错误处理](#boot-features-error-handling)视图,应该使用[自定义错误页面](#boot-features-error-handling-custom-error-pages)来代替。
1202+
1203+
这里有一个 [JSP 示例](https://github.com/spring-projects/spring-boot/tree/v2.1.1.RELEASE/spring-boot-samples/spring-boot-sample-web-jsp),您可以了解到如何配置。
1204+
1205+
<a id="boot-features-reactive-server"></a>
1206+
1207+
### 28.5、内嵌响应式服务器支持
1208+
1209+
Spring Boot 包括对以下内嵌响应式 Web 服务器的支持:Reactor Netty、Tomcat、Jetty 和 Undertow。大多数开发人员使用对应的 **Starter** 来获取一个完全配置的实例。默认情况下,内嵌服务器在 8080 端口上监听 HTTP 请求。
1210+
1211+
<a id="boot-features-reactive-server-resources"></a>
1212+
1213+
### 28.6、响应式服务器资源配置
1214+
1215+
在自动配置 Reactor Netty 或 Jetty 服务器时,Spring Boot 将创建特定的 bean 为服务器实例提供 HTTP 资源:`ReactorResourceFactory``JettyResourceFactory`
1216+
1217+
默认情况下,这些资源也将与 Reactor Netty 和 Jetty 客户端共享以获得最佳性能,具体如下:
1218+
1219+
- 用于服务器和客户端的的相同技术
1220+
- 客户端实例使用了 Spring Boot 自动配置的 `WebClient.Builder` bean 构建。
1221+
1222+
开发人员可以通过提供自定义的 `ReactorResourceFactory``JettyResourceFactory` bean 来重写 Jetty 和 Reactor Netty 的资源配置 —— 将应用于客户端和服务器。
1223+
1224+
您可以在 [WebClient Runtime](#boot-features-webclient-runtime) 章节中了解有关客户端资源配置的更多内容。
1225+
11271226
**待续……**

0 commit comments

Comments
 (0)