本节书摘来自异步社区《精通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所示。

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