天天看点

《精通Spring MVC 4》——1.8 嵌入式Servlet容器(Tomcat)的配置

本节书摘来自异步社区《精通spring mvc 4》一书中的第1章,第1.8节,作者:【美】geoffroy warin著,更多章节内容可以访问云栖社区“异步社区”公众号查看

默认情况下,spring boot在打包和运行应用时,会使用tomcat嵌入式api(tomcat embedded api)。

我们来看一下embeddedservletcontainerautoconfiguration:

上面的代码非常简单直接,这个代码包含了3个不同的配置,哪一个会处于激活状态要取决于类路径下哪些内容是可用的。

可以将spring boot与tomcat、tc-server、jetty或者undertow结合使用。服务器可以很容易地进行替换,只需将spring-boot-starter-tomcat jar依赖移除掉,并将其替换为jetty或undertow对应的依赖即可。如果你想这样做的话,请参考相关的文档。

对servlet容器(tomcat)的所有配置都会在tomcatembeddedservletcontainerfactory中进行。尽管你应该读一下这个类,它为嵌入式tomcat提供一个非常高级的配置(为其查找文档会非常困难),但是在这里我们不会直接查看这个类。

我会为读者介绍配置servlet容器时不同的选项。

1.8.1 http端口

通过在application.properties文件中定义server.port属性或者定义名为server_port的环境变量,我们可以修改默认的http端口。

通过将该变量设置为−1,可以禁用http,或者将其配置为0,这样的话,就会在随机的端口上启动应用。对于测试,这是很便利的。

1.8.2 ssl配置

配置ssl是一项很麻烦的事情,但是spring boot有一项很简单的解决方案。我们只需一点属性就能保护服务器了:

不过,为了使上面的例子运行起来,我们需要生成一个keystore文件。

我们将会在第 6 章中,深入介绍安全的可选方案。当然,我们还可以通过添加自己embeddedservletcontainerfactory来进一步自定义tomcatembeddedservletcontainerfactory的功能。

1.8.3 其他配置

在配置中,我们可以通过简单地声明@bean 元素来添加典型的 java web 元素,如servlet、filter和servletcontextlistener。

除此之外,spring boot还为我们内置了3项内容:

在jacksonautoconfiguration中,声明使用jackson进行json序列化;

在httpmessageconvertersautoconfiguration中,声明了默认的httpmessageconverter;

在jmxautoconfiguration中,声明了jmx功能。

我们将会在第5章中,更详细地了解jackson的配置。关于jmx配置,我们可以在本地通过jconsole连接应用之后进行尝试,如图1-9所示。

《精通Spring MVC 4》——1.8 嵌入式Servlet容器(Tomcat)的配置

图1-9

通过将org.springframework.boot:spring-boot-starter-actuator添加到类路径下,我们可以添加更多有意思的mbean。我们甚至可以定义自己的mbean,并通过jolokia将其暴露为http。另一方面,我们也可以禁用这些端点,只需在配置中添加spring.jmx.enabled=false即可。