Перейти к основному содержимому

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

· 4 мин. чтения

1. Обзор

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

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

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

server.port=8083

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

server:
port: 8083

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

@Component
public class CustomizationBean implements
WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {

@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<ConfigurableServletWebServerFactory> {

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

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

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

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

public class MyCustomErrorController implements ErrorController {

private static final String PATH = "/error";

@GetMapping(value=PATH)
public String error() {
return "Error haven";
}
}

5. Настройте сообщения об ошибках

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

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

@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 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. Настройте уровни ведения журнала

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

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

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

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

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

@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 в качестве встроенного сервера по умолчанию . Если это нужно изменить — вы можете исключить зависимость Tomcat и вместо этого включить Jetty или 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-jetty</artifactId>
</dependency>
@Bean
public JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory() {
JettyEmbeddedServletContainerFactory jettyContainer =
new JettyEmbeddedServletContainerFactory();

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

Настройка отлива

<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 .

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

Код, используемый в этой статье, можно найти в нашем репозитории Github.