Настройка веб-приложения Spring Boot

Настройте веб-приложение Spring Boot

1. обзор

Spring Boot может многое; В этом руководстве мы рассмотрим несколько наиболее интересных параметров конфигурации Boot.

Дальнейшее чтение:

Миграция из весны в весеннюю загрузку

Посмотрите, как правильно перейти с Spring на Spring Boot.

Read more

Создание собственного стартера с Spring Boot

Краткое и практическое руководство по созданию пользовательских стартеров Spring Boot.

Read more

Тестирование в Spring Boot

Узнайте, как Spring Boot поддерживает тестирование, чтобы эффективно писать модульные тесты.

Read more

2. Номер порта

В основных автономных приложениях основным портом HTTP по умолчанию является 8080; we can easily configure Boot to use a different port:

server.port=8083

И для конфигурации на основе YAML:

server:
    port: 8083

Мы также можем программно настроить порт сервера:

@Component
public class CustomizationBean implements
  WebServerFactoryCustomizer {

    @Override
    public void customize(ConfigurableServletWebServerFactory container) {
        container.setPort(8083);
    }
}

3. Контекстный путь

По умолчанию контекстный путь - «/». Если это не идеально и вам нужно изменить его - на что-то вроде /app_name, вот быстрый и простой способ сделать это с помощью свойств:

server.servlet.contextPath=/springbootapp

И для конфигурации на основе YAML:

server:
    servlet:
        contextPath:/springbootapp

Наконец, изменение может быть сделано также программно:

@Component
public class CustomizationBean
  implements WebServerFactoryCustomizer {

    @Override
    public void customize(ConfigurableServletWebServerFactorycontainer) {
        container.setContextPath("/springbootapp");
    }
}

4. Страница ошибок White Label

Spring Boot автоматически регистрирует bean-компонент`BasicErrorController, если вы не укажете какую-либо пользовательскую реализацию в конфигурации. `++

Однако этот контроллер по умолчанию можно, конечно, настроить:

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. Настройте сообщения об ошибках

Boot по умолчанию предоставляет сопоставления/error для разумной обработки ошибок.

Если вы хотите настроить более конкретные страницы ошибок, существует хорошая поддержка унифицированного Java DSL для настройки обработки ошибок:

@Component
public class CustomizationBean
  implements WebServerFactoryCustomizer {

    @Override
    public void customize(ConfigurableServletWebServerFactorycontainer) {
        container.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400"));
        container.addErrorPages(new ErrorPage("/errorHaven"));
    }
}

Здесь мы специально обработалиBad Request для сопоставления пути/400 и всех остальных для сопоставления с общим путем.

И очень простая реализация/errorHaven:

@GetMapping("/errorHaven")
String errorHeaven() {
    return "You have reached the haven of errors!!!";
}

Выход:

You have reached the haven of errors!!!

6. Завершение работы загрузочного приложения программным способом

Вы можете программно завершить загрузочное приложение с помощьюSpringApplication.. У него есть статический методexit(), который принимает два аргумента:ApplicationContext иExitCodeGenerator:

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

С помощью этого служебного метода мы можем закрыть приложение.

7. Настроить уровни ведения журнала

Вы легко можетеtune the logging levels in a Boot application; Начиная с версии 1.2.0 и новее, вы можете настроить уровень журнала в основном файле свойств:

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

И так же, как и в стандартном приложении Spring, вы можете активировать различные системы ведения журнала, такие какLogback,log4j,log4j2 и т. Д., Добавив их настроенный XML или файл свойств в путь к классам и определив библиотеки. в пом.

8. Зарегистрируйте новый сервлет

Если вы развертываете приложение с помощью встроенного сервера, вы можете зарегистрировать новые сервлеты в загрузочном приложенииby exposing them as beans из обычной конфигурации:

@Bean
public HelloWorldServlet helloWorld() {
    return new HelloWorldServlet();
}

В качестве альтернативы вы можете использовать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 as the default embedded server. Если это нужно изменить - вы можете исключить зависимость Tomcat и вместо этого включить Jetty или Undertow:

Настройка Jetty


    org.springframework.boot
    spring-boot-starter-web
    
        
            org.springframework.boot
            spring-boot-starter-tomcat
        
    


    org.springframework.boot
    spring-boot-starter-jetty
@Bean
public JettyEmbeddedServletContainerFactory  jettyEmbeddedServletContainerFactory() {
    JettyEmbeddedServletContainerFactory jettyContainer =
      new JettyEmbeddedServletContainerFactory();

    jettyContainer.setPort(9000);
    jettyContainer.setContextPath("/springbootapp");
    return jettyContainer;
}

Настройка Undertow


    org.springframework.boot
    spring-boot-starter-web
    
        
            org.springframework.boot
            spring-boot-starter-tomcat
        
    


    org.springframework.boot
    spring-boot-starter-undertow
@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. Заключение

В этой быстрой статье мы рассмотрели некоторые из другихinteresting and useful Spring Boot configuration options.

Конечно, в справочных документах есть много, гораздо больше возможностей для настройки и настройки приложения Boot в соответствии с вашими потребностями - это лишь некоторые из наиболее полезных, которые я нашел.