转自:https://www.baeldung.com/spring-boot-application-configuration
1.概述 Spring Boot可以做很多事情; 在本教程中,我们将介绍Boot中一些有趣的配置选项。
2.端口号 在大部分的独立应用程序中,主要的HTTP端口默认为8080;我们可以轻松地将Boot配置为使用其他端口 :
对于基于YAML的配置:
我们还可以通过编程方式自定义服务器端口:
1 2 3 4 5 6 7 8 9 @Component public class CustomizationBean implements WebServerFactoryCustomizer <ConfigurableServletWebServerFactory > { @Override public void customize (ConfigurableServletWebServerFactory container) { container.setPort(8083 ); } }
3.上下文路径 默认情况下,上下文路径为“/
”。 如果那不是理想的,您需要将其更改为类似/app_name
的名称,这是通过属性执行此操作的快速简便的方法:
1 server.servlet.contextPath=/springbootapp
对于基于YAML的配置:
1 2 3 server: servlet: contextPath:/springbootapp
最后–更改也可以通过编程方式完成:
1 2 3 4 5 6 7 8 9 @Component public class CustomizationBean implements WebServerFactoryCustomizer <ConfigurableServletWebServerFactory > { @Override public void customize (ConfigurableServletWebServerFactorycontainer) { container.setContextPath("/springbootapp" ); } }
4.白色标签错误页面 如果您在配置中未指定任何自定义实现,则Spring Boot会自动注册BasicErrorController
bean。
但是,当然可以配置此默认控制器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 public class MyCustomErrorController implements ErrorController { private static final String PATH = "/error" ; @GetMapping(value=PATH) public String error () { return "Error haven" ; } @Override public String getErrorPath () { return PATH; } }
5.自定义错误消息 Spring Boot默认情况下提供/error
映射,自动处理错误。
如果要配置特定的错误页面,则对统一的Java DSL自定义错误处理也有支持:
1 2 3 4 5 6 7 8 9 10 @Component public class CustomizationBean implements WebServerFactoryCustomizer <ConfigurableServletWebServerFactory > { @Override public void customize (ConfigurableServletWebServerFactorycontainer) { container.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400" )); container.addErrorPages(new ErrorPage("/errorHaven" )); } }
在这里,我们专门处理了Bad Requst 以匹配/400
路径,所有其他请求均匹配“公共”路径。
简单的/errorHaven
实现:
1 2 3 4 @GetMapping("/errorHaven") String errorHeaven () { return "You have reached the haven of errors!!!" ; }
输出:
1 You have reached the haven of errors!!!
6.以编程方式关闭启动应用程序 您可以在SpringApplication的帮助下以编程方式关闭Boot应用程序。 它具有一个静态的exit()
方法,该方法带有两个参数:ApplicationContext
和ExitCodeGenerator
:
1 2 3 4 @Autowired public void shutDown (ExecutorServiceExitCodeGenerator exitCodeGenerator) { SpringApplication.exit(applicationContext, exitCodeGenerator); }
通过此实用程序方法,我们可以关闭该应用程序。
7.配置日志记录级别 您可以轻松地在Spring Boot应用程序中调整日志记录级别。 从版本1.2.0开始,您可以在主要属性文件中配置日志级别:
1 2 logging.level.org.springframework.web: DEBUG logging.level.org.hibernate: ERROR
就像使用标准的Spring应用程序一样,您可以通过在类路径中添加自定义的XML或属性文件并在pom中定义类似Logback
,log4j
,log4j2
等库来激活不同的日志记录系统。
8.注册一个新的Servlet 如果要在嵌入的服务器帮助下部署该应用程序,则可以通过将它们作为常规配置中的bean暴露来在Spring Boot应用程序中注册新的Servlet:
1 2 3 4 @Bean public HelloWorldServlet helloWorld () { return new HelloWorldServlet(); }
另外,可以使用ServletRegistrationBean:
1 2 3 4 5 6 7 8 9 @Bean public SpringHelloServletRegistrationBean servletRegistrationBean () { SpringHelloServletRegistrationBean bean = new SpringHelloServletRegistrationBean( new SpringHelloWorldServlet(), "/springHelloWorld/*" ); bean.setLoadOnStartup(1 ); bean.addInitParameter("message" , "SpringHelloWorldServlet special message" ); return bean; }
9.在Spring Boot应用程序中配置Jetty或Undertow Spring Boot启动器通常使用Tomcat作为默认的嵌入式服务器 。 如果需要更改–您可以移除Tomcat依赖关系,而改为包含Jetty或Undertow:
配置 Jetty
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-web</artifactId > <exclusions > <exclusion > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-tomcat</artifactId > </exclusion > </exclusions > </dependency > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-jetty</artifactId > </dependency >
1 2 3 4 5 6 7 8 9 @Bean public JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory () { JettyEmbeddedServletContainerFactory jettyContainer = new JettyEmbeddedServletContainerFactory(); jettyContainer.setPort(9000 ); jettyContainer.setContextPath("/springbootapp" ); return jettyContainer; }
配置 Undertow
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-web</artifactId > <exclusions > <exclusion > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-tomcat</artifactId > </exclusion > </exclusions > </dependency > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-undertow</artifactId > </dependency >
1 2 3 4 5 6 7 8 9 10 11 12 13 14 @Bean public UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory () { UndertowEmbeddedServletContainerFactory factory = new UndertowEmbeddedServletContainerFactory(); factory.addBuilderCustomizers(new UndertowBuilderCustomizer() { @Override public void customize (io.undertow.Undertow.Builder builder) { builder.addHttpListener(8080 , "0.0.0.0" ); } }); return factory; }
10.结论 在这篇快速文章中,我们介绍了一些有趣和有用的Spring Boot配置选项。
当然,在参考文档中,还有很多其他选项可以配置和调整Spring Boot应用程序以满足您的需求-这些只是我发现的一些更有用的工具。