zoukankan      html  css  js  c++  java
  • Configure a Spring Boot Web Application

    1.概述

    Spring Boot可以做很多事情; 在本教程中,我们将介绍Boot中一些更有趣的配置选项。

    2.端口号

    在独立应用程序中,HTTP端口默认为8080; 我们可以轻松配置Boot以使用不同的端口:(properties文件配置)

    1 server.port=8083

    对于基于YAML文件的配置:

    1 server:
    2     port: 8083

    我们还可以以编程方式自定义服务器端口:

    1 @Component
    2 public class CustomizationBean implements
    3   WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
    4   
    5     @Override
    6     public void customize(ConfigurableServletWebServerFactory container) {
    7         container.setPort(8083);
    8     }
    9 }
     

    3.上下文路径

    默认情况下,上下文路径为“/”。如果这不是理想的,你需要改变它 - 像/ app_name这样,下面是通过配置文件快速简单配置的方法:

    server.servlet.contextPath=/springbootapp

    对于基于YAML的配置:

    server:
        servlet:
            contextPath:/springbootapp

    最后 - 改变也可以通过编程方式完成:

    1 @Component
    2 public class CustomizationBean
    3   implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
    4   
    5     @Override
    6     public void customize(ConfigurableServletWebServerFactorycontainer) {
    7         container.setContextPath("/springbootapp");
    8     }
    9 }

    4.默认错误页面

    如果未在配置中指定任何自定义实现,则Spring Boot会自动注册BasicErrorController这个Bean。

    当然可以配置此默认控制器:

     1 public class MyCustomErrorController implements ErrorController {
     2   
     3     private static final String PATH = "/error";
     4      
     5     @GetMapping(value=PATH)
     6     public String error() {
     7         return "Error haven";
     8     }
     9  
    10     @Override
    11     public String getErrorPath() {
    12         return PATH;
    13     }
    14 }
     

    5.自定义错误消息

    默认情况下,Boot提供/错误页映射以合理的方式处理错误。

    如果要配置更具体的错误页面,可以很好地支持统一的Java DSL来自定义错误处理:

     1 @Component
     2 public class CustomizationBean
     3   implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
     4   
     5     @Override
     6     public void customize(ConfigurableServletWebServerFactorycontainer) {        
     7         container.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400"));
     8         container.addErrorPages(new ErrorPage("/errorHaven"));
     9     }
    10 }

    在这里,我们专门处理Bad Request以匹配/ 400路径以及所有其他路径以匹配公共路径。

     

    6.以编程方式关闭引导应用程序

    您可以在SpringApplication的帮助下以编程方式关闭Boot应用程序这有一个静态的exit()方法,它接受两个参数:ApplicationContextExitCodeGenerator

    1 @Autowired
    2 public void shutDown(ExecutorServiceExitCodeGenerator exitCodeGenerator) {
    3     SpringApplication.exit(applicationContext, exitCodeGenerator);
    4 }

    通过这种实用方法,我们可以关闭应用程序。

    7.配置日志级别

    您可以轻松调整Boot应用程序中的日志记录级别 ; 从1.2.0版开始,您可以在主属性文件中配置日志级别:

    logging.level.org.springframework.web: DEBUG
    logging.level.org.hibernate: ERROR

    就像使用标准Spring应用程序一样 - 您可以通过在类路径中添加自定义XML或属性文件并在pom中定义库来激活不同的日志记录系统,如Logbacklog4jlog4j2等。

    8.注册一个新的Servlet

    如果您在嵌入式服务器的帮助下部署应用程序,则可以通过将它们作为传统配置中的bean公开,在Boot应用程序中注册新的Servlet 

    1 @Bean
    2 public HelloWorldServlet helloWorld() {
    3     return new HelloWorldServlet();
    4 }

    或者,您可以使用ServletRegistrationBean :

    @Bean
    public SpringHelloServletRegistrationBean servletRegistrationBean() {
      
        SpringHelloServletRegistrationBean bean = new SpringHelloServletRegistrationBean(
          new SpringHelloWorldServlet(), "/springHelloWorld/*");
        bean.setLoadOnStartup(1);
        bean.addInitParameter("message", "SpringHelloWorldServlet special message");
        return bean;
    }
     

    9.在引导应用程序中配置Jetty或Undertow

    Spring Boot启动程序通常使用Tomcat作为默认的嵌入式服务器如果需要更改 - 您可以排除Tomcat依赖项并改为包含Jetty或Undertow:

    配置Jetty

    <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>
    @Bean
    public JettyEmbeddedServletContainerFactory  jettyEmbeddedServletContainerFactory() {
        JettyEmbeddedServletContainerFactory jettyContainer = 
          new JettyEmbeddedServletContainerFactory();
         
        jettyContainer.setPort(9000);
        jettyContainer.setContextPath("/springbootapp");
        return jettyContainer;
    }

    配置Undertow

    <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>
    @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配置选项

  • 相关阅读:
    zeromq学习记录(五)vc下多线程
    zeromq学习记录(七)订阅发布消息封装
    Mozilla研究—从输入URL到显示内容的基本过程
    Mozilla研究—深入理解mozilla所需的背景知识
    Mozilla研究—组件加载机制
    Mozilla研究—传输协议
    Mozilla研究—mozilla中的设计亮点
    GTK+主循环(main loop)的工作原理
    Mozilla研究—mozilla能为我们做什么
    Mozilla研究—组件的创建过程
  • 原文地址:https://www.cnblogs.com/gc65/p/10618143.html
Copyright © 2011-2022 走看看