diff --git a/How-to_ guides.md b/How-to_ guides.md index 96172b2..4379615 100644 --- a/How-to_ guides.md +++ b/How-to_ guides.md @@ -314,16 +314,146 @@ dependencies { ``` * 配置Jetty - +通常你可以遵循[Section 63.7, “Discover built-in options for external properties”](http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-discover-build-in-options-for-external-properties)关于`@ConfigurationProperties`(此处主要是ServerProperties)的建议,但也要看下`EmbeddedServletContainerCustomizer`。Jetty API相当丰富,一旦获取到`JettyEmbeddedServletContainerFactory`,你就可以使用很多方式修改它。或更彻底地就是添加你自己的`JettyEmbeddedServletContainerFactory`。 * 使用Undertow替代Tomcat + +使用Undertow替代Tomcat和[使用Jetty替代Tomcat](https://github.com/qibaoguang/Spring-Boot-Reference-Guide/edit/master/How-to_%20guides.md)非常类似。你需要排除Tomat依赖,并包含Undertow starter。 + +Maven示例: +```xml + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + org.springframework.boot + spring-boot-starter-undertow + +``` +Gradle示例: +```gradle +configurations { + compile.exclude module: "spring-boot-starter-tomcat" +} + +dependencies { + compile 'org.springframework.boot:spring-boot-starter-web:1.3.0.BUILD-SNAPSHOT") + compile 'org.springframework.boot:spring-boot-starter-undertow:1.3.0.BUILD-SNAPSHOT") + // ... +} + +``` * 配置Undertow +通常你可以遵循[Section 63.7, “Discover built-in options for external properties”](http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-discover-build-in-options-for-external-properties)关于`@ConfigurationProperties`(此处主要是ServerProperties和ServerProperties.Undertow),但也要看下`EmbeddedServletContainerCustomizer`。一旦获取到`UndertowEmbeddedServletContainerFactory`,你就可以使用一个`UndertowBuilderCustomizer`修改Undertow的配置以满足你的需求。或更彻底地就是添加你自己的`UndertowEmbeddedServletContainerFactory`。 + +* 启用Undertow的多监听器(Multiple Listeners) + +往`UndertowEmbeddedServletContainerFactory`添加一个`UndertowBuilderCustomizer`,然后添加一个监听者到`Builder`: +```java +@Bean +public UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory() { + UndertowEmbeddedServletContainerFactory factory = new UndertowEmbeddedServletContainerFactory(); + factory.addBuilderCustomizers(new UndertowBuilderCustomizer() { + + @Override + public void customize(Builder builder) { + builder.addHttpListener(8080, "0.0.0.0"); + } + + }); + return factory; +} +``` +* 使用Tomcat7 + +Tomcat7可用于Spring Boot,但默认使用的是Tomcat8。如果不能使用Tomcat8(例如,你使用的是Java1.6),你需要改变classpath去引用Tomcat7。 + +- 通过Maven使用Tomcat7 + +如果正在使用starter pom和parent,你只需要改变Tomcat的version属性,比如,对于一个简单的webapp或service: +```xml + + 7.0.59 + + + ... + + org.springframework.boot + spring-boot-starter-web + + ... + +``` +- 通过Gradle使用Tomcat7 + +你可以通过设置`tomcat.version`属性改变Tomcat的版本: +```gradle +ext['tomcat.version'] = '7.0.59' +dependencies { + compile 'org.springframework.boot:spring-boot-starter-web' +} +``` +* 使用Jetty8 + +Jetty8可用于Spring Boot,但默认使用的是Jetty9。如果不能使用Jetty9(例如,因为你使用的是Java1.6),你只需改变classpath去引用Jetty8。你也需要排除Jetty的WebSocket相关的依赖。 + +- 通过Maven使用Jetty8 + +如果正在使用starter pom和parent,你只需添加Jetty starter,去掉WebSocket依赖,并改变version属性,比如,对于一个简单的webapp或service: +```xml + + 8.1.15.v20140411 + 2.2.0.v201112011158 + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + org.springframework.boot + spring-boot-starter-jetty + + + org.eclipse.jetty.websocket + * + + + + +``` +- 通过Gradle使用Jetty8 + +你可以设置`jetty.version`属性并排除相关的WebSocket依赖,比如对于一个简单的webapp或service: +```gradle +ext['jetty.version'] = '8.1.15.v20140411' +dependencies { + compile ('org.springframework.boot:spring-boot-starter-web') { + exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' + } + compile ('org.springframework.boot:spring-boot-starter-jetty') { + exclude group: 'org.eclipse.jetty.websocket' + } +} +``` +* 使用@ServerEndpoint创建WebSocket端点 - - - +* 启用HTTP响应压缩