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 tracefor 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 tracefor 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 tracefor 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 = trueE, 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.