Настройте веб-приложение Spring Boot
1. обзор
Spring Boot может многое; В этом руководстве мы рассмотрим несколько наиболее интересных параметров конфигурации Boot.
Дальнейшее чтение:
Миграция из весны в весеннюю загрузку
Посмотрите, как правильно перейти с Spring на Spring Boot.
Создание собственного стартера с Spring Boot
Краткое и практическое руководство по созданию пользовательских стартеров Spring Boot.
Тестирование в Spring Boot
Узнайте, как Spring Boot поддерживает тестирование, чтобы эффективно писать модульные тесты.
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 в соответствии с вашими потребностями - это лишь некоторые из наиболее полезных, которые я нашел.