Рубрики
Без рубрики

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

Некоторые из наиболее полезных конфигураций для приложения Spring Boot.

Автор оригинала: Eugen Paraschiv.

1. Обзор

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

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

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

Смотрите, как правильно перейти с весны на весеннюю загрузку.
Подробнее

Создание пользовательского стартера с помощью Spring Boot

Краткое и практическое руководство по созданию пользовательских пружинных загрузочных стартеров.
Подробнее

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

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

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

В основных автономных приложениях основной HTTP-порт по умолчанию равен 8080; мы можем легко настроить загрузку для использования другого порта :

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. Страница Ошибки Белой Метки

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

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

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"));
    }
}

Здесь мы специально обработали Плохой запрос , чтобы соответствовать /400 путь и все остальные, чтобы соответствовать общему пути.

И очень простая /ошибка/| реализация:

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

Выход:

You have reached the haven of errors!!!

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

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

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

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

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

Вы можете легко настроить уровни ведения журнала в загрузочном приложении ; Начиная с версии 1.2.0 и далее, вы можете настроить уровень ведения журнала в главном файле свойств:

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

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

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

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

@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. Настройте причал или Подводное течение в загрузочном приложении

Стартеры весенней загрузки обычно используют Tomcat в качестве встроенного сервера по умолчанию . Если это необходимо изменить – вы можете исключить зависимость Tomcat и вместо этого включить причал или подводное течение:

Настройка причала


    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;
}

Настройка подводного течения


    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. Заключение

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

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