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.