Configurar um aplicativo Web de inicialização Spring
1. Visão geral
Spring Boot pode fazer muitas coisas; neste tutorial, veremos algumas das opções de configuração mais interessantes no Boot.
Leitura adicional:
Migrando do Spring para o Spring Boot
Veja como migrar corretamente de uma inicialização Spring para Spring.
Criando um Starter personalizado com Spring Boot
Um guia rápido e prático para criar iniciantes personalizados do Spring Boot.
Testando no Spring Boot
Aprenda como o Spring Boot suporta testes, para escrever testes de unidade com eficiência.
2. O número da porta
Nos principais aplicativos autônomos, o padrão da porta HTTP principal é 8080; we can easily configure Boot to use a different port:
server.port=8083
E para a configuração baseada em YAML:
server:
port: 8083
Também podemos personalizar programaticamente a porta do servidor:
@Component
public class CustomizationBean implements
WebServerFactoryCustomizer {
@Override
public void customize(ConfigurableServletWebServerFactory container) {
container.setPort(8083);
}
}
3. O Caminho do Contexto
Por padrão, o caminho do contexto é "/". Se isso não for o ideal e você precisar alterá-lo - para algo como /app_name, aqui está a maneira rápida e simples de fazer isso por meio de propriedades:
server.servlet.contextPath=/springbootapp
E para configuração baseada em YAML:
server:
servlet:
contextPath:/springbootapp
Finalmente - a alteração também pode ser feita de forma programática:
@Component
public class CustomizationBean
implements WebServerFactoryCustomizer {
@Override
public void customize(ConfigurableServletWebServerFactorycontainer) {
container.setContextPath("/springbootapp");
}
}
4. A página de erro com etiqueta em branco
Spring Boot registra automaticamente um bean`BasicErrorController se você não especificar nenhuma implementação customizada na configuração. `++
No entanto, esse controlador padrão pode, é claro, ser configurado:
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. Personalize as mensagens de erro
O boot fornece mapeamentos/error por padrão para lidar com os erros de uma maneira sensata.
Se você deseja configurar páginas de erro mais específicas, há um bom suporte para um Java DSL uniforme para personalizar o tratamento de erros:
@Component
public class CustomizationBean
implements WebServerFactoryCustomizer {
@Override
public void customize(ConfigurableServletWebServerFactorycontainer) {
container.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400"));
container.addErrorPages(new ErrorPage("/errorHaven"));
}
}
Aqui, tratamos especificamenteBad Request para corresponder ao caminho/400 e todos os outros para corresponder ao caminho comum.
E uma implementação de/errorHaven muito simples:
@GetMapping("/errorHaven")
String errorHeaven() {
return "You have reached the haven of errors!!!";
}
Resultado:
You have reached the haven of errors!!!
6. Desligue um aplicativo de inicialização programaticamente
Você pode desligar programaticamente um aplicativo de inicialização com a ajuda deSpringApplication.. Isso tem um métodoexit() estático que leva dois argumentos: oApplicationContexte umExitCodeGenerator:
@Autowired
public void shutDown(ExecutorServiceExitCodeGenerator exitCodeGenerator) {
SpringApplication.exit(applicationContext, exitCodeGenerator);
}
É por meio desse método utilitário que podemos desligar o aplicativo.
7. Configure os níveis de registro
Você pode facilmentetune the logging levels in a Boot application; A partir da versão 1.2.0 em diante, você pode configurar o nível de log no arquivo de propriedades principal:
logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
E, assim como com um aplicativo Spring padrão - você pode ativar diferentes sistemas de registro comoLogback,log4j,log4j2, etc, adicionando seu XML personalizado ou arquivo de propriedades no classpath e definindo as bibliotecas no pom.
8. Registrar um novo servlet
Se você estiver implantando o aplicativo com a ajuda do servidor incorporado, poderá registrar novos Servlets em um aplicativo de inicializaçãoby exposing them as beans da configuração convencional:
@Bean
public HelloWorldServlet helloWorld() {
return new HelloWorldServlet();
}
Alternativamente, você pode usar umServletRegistrationBean:
@Bean
public SpringHelloServletRegistrationBean servletRegistrationBean() {
SpringHelloServletRegistrationBean bean = new SpringHelloServletRegistrationBean(
new SpringHelloWorldServlet(), "/springHelloWorld/*");
bean.setLoadOnStartup(1);
bean.addInitParameter("message", "SpringHelloWorldServlet special message");
return bean;
}
9. Configurar Jetty ou Undertow no aplicativo de inicialização
Os iniciadores Spring Boot geralmente usamTomcat as the default embedded server. Se isso precisar ser alterado - você pode excluir a dependência do Tomcat e incluir Jetty ou Undertow:
Configurando 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;
}
Configurando 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. Conclusão
Neste artigo rápido, examinamos alguns dos maisinteresting and useful Spring Boot configuration options.
É claro que existem muitas, muito mais opções para configurar e ajustar um aplicativo de inicialização às suas necessidades nos documentos de referência - essas são apenas algumas das mais úteis que encontrei.