No Spring Boot, o arquivo application.properties
ou application.yml
é usado para configurar várias propriedades e comportamentos da aplicação. No seu exemplo, você está configurando atributos relacionados à resposta de erro do servidor. Vou explicar cada um deles:
-
server.error.include-message:
- always: Sempre incluirá a mensagem de erro nas respostas de erro, independentemente do ambiente. Isso é útil durante o desenvolvimento e a depuração, pois fornece informações detalhadas sobre o erro.
- on_trace: Incluirá a mensagem de erro apenas quando um parâmetro chamado
trace
for passado na solicitação. Isso é útil para limitar a exposição de mensagens de erro em ambientes de produção, mas permite que você obtenha detalhes quando necessário. - never: Nunca incluirá a mensagem de erro nas respostas de erro, independentemente do ambiente. É uma escolha mais segura para ambientes de produção, onde você não deseja expor informações sensíveis.
-
server.error.include-binding-errors:
- always: Sempre incluirá erros de ligação (binding errors) nas respostas de erro. Isso é útil durante o desenvolvimento e a depuração para identificar problemas com dados enviados nas solicitações.
- on_param: Incluirá erros de ligação apenas quando um parâmetro chamado
trace
for passado na solicitação. Isso ajuda a limitar a exposição de erros de ligação em ambientes de produção.
-
server.error.include-stacktrace:
- always: Sempre incluirá a pilha de chamadas (stack trace) nas respostas de erro, independentemente do ambiente. Isso é útil durante o desenvolvimento e a depuração para rastrear a origem dos erros.
- on_param: Incluirá a pilha de chamadas apenas quando um parâmetro chamado
trace
for passado na solicitação. Isso é útil para obter informações detalhadas sobre o erro apenas quando necessário, sem sobrecarregar todas as respostas de erro com informações de pilha. - never: Nunca incluirá a pilha de chamadas nas respostas de erro, independentemente do ambiente. Isso pode ser uma escolha mais segura em ambientes de produção para evitar a exposição de informações sensíveis.
-
server.error.include-exception:
- true: Sempre incluirá a exceção subjacente que causou o erro nas respostas de erro, independentemente do ambiente. Isso é útil durante o desenvolvimento e a depuração para obter informações detalhadas sobre o erro.
- false: Nunca incluirá a exceção subjacente nas respostas de erro, independentemente do ambiente. Isso pode ser uma escolha mais segura em ambientes de produção para evitar a exposição de informações sensíveis.
Suponha que você tenha um controlador com uma rota que gera um erro:
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ExemploController {
@GetMapping("/gera-erro")
public ResponseEntity<Object> geraErro() {
// Simulando um erro
int resultado = 10 / 0;
return ResponseEntity.ok(resultado);
}
}
Agora, se você configurar suas propriedades do Spring Boot como mostrado anteriormente:
server.error.include-message = always
server.error.include-binding-errors = on_param
server.error.include-stacktrace = always
server.error.include-exception = true
E, em seguida, acessar a rota /gera-erro
, você receberá uma resposta de erro HTTP com base nessas configurações.
Por exemplo, se você acessar http://localhost:8080/gera-erro
, poderá receber uma resposta como esta:
{
"timestamp": "2023-09-08T12:34:56.789+00:00",
"status": 500,
"error": "Internal Server Error",
"message": "/ by zero",
"path": "/gera-erro",
"trace": "java.lang.ArithmeticException: / by zero\n\tat com.example.ExemploController.geraErro(ExemploController.java:12)\n..."
}
Neste exemplo, a mensagem de erro é incluída ("message": "/ by zero"
), a pilha de chamadas está incluída porque a propriedade server.error.include-stacktrace
está configurada como always
, e a exceção subjacente está incluída porque a propriedade server.error.include-exception
está configurada como true
.
O formato exato da resposta HTTP pode variar dependendo de outros fatores, como as configurações do Spring Boot e os manipuladores de exceção personalizados em sua aplicação. Essas configurações afetarão principalmente o conteúdo da resposta de erro.
Essas configurações permitem ajustar o nível de detalhe das mensagens de erro nas respostas da sua aplicação Spring Boot, tornando-as mais adequadas ao ambiente de execução, seja ele de desenvolvimento ou produção.