具有休眠内部服务器错误但状态码为200的spring boot

问题描述 投票:-1回答:1

我是Spring的新手,我用qazxsw poi,qazxsw poi和qazxsw poi创建了一个小型的Web服务。这是我的HomeController:

Spring-boot

一切都运作良好,除了我不明白为什么当我有一个内部服务器错误我得到一个Hibernate与这个身体,例如:

Swagger

还有发射器:

package io.swagger.configuration;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Home redirection to swagger api documentation
 */
@Controller
public class HomeController {
    @RequestMapping(value = "/")
    public String index() {
        System.out.println("swagger-ui.html");
        return "redirect:swagger-ui.html";
    }
}

配置:

status 200

Swagger的另一个:

{
    "timestamp": "2017-12-12T23:52:02.306+0000",
    "status": 500,
    "error": "Internal Server Error",
    "exception": "javax.persistence.PersistenceException",
    "message": "org.hibernate.exception.ConstraintViolationException: could not execute statement",
    "path": "/example/members/1031/subscriptions"
}

这是我的一个控制器,它们都是相似的:

package io.swagger;

import org.apache.commons.logging.LogFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.ExitCodeGenerator;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;

import springfox.documentation.swagger2.annotations.EnableSwagger2;

@SpringBootApplication
@EnableSwagger2
@ComponentScan(basePackages = "io.swagger")
public class Swagger2SpringBoot extends SpringBootServletInitializer implements CommandLineRunner {

    @Override
    public void run(String... arg0) throws Exception {
        if (arg0.length > 0 && arg0[0].equals("exitcode")) {
            throw new ExitException();
        }
    }

    public static void main(String[] args) throws Exception {

        LogFactory.getLog(Swagger2SpringBoot.class).warn("test");

        new SpringApplication(Swagger2SpringBoot.class).run(args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Swagger2SpringBoot.class);
    }

    class ExitException extends RuntimeException implements ExitCodeGenerator {
        private static final long serialVersionUID = 1L;

        @Override
        public int getExitCode() {
            return 10;
        }

    }
}

那么,如果我遇到服务器错误,为什么我会有这200个状态呢?至少我想生成一个package io.swagger; import java.util.List; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; @Configuration public class WebConfiguration extends WebMvcConfigurerAdapter { /** * Make sure dates are serialised in * ISO-8601 format instead as timestamps */ @Override public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { for (HttpMessageConverter<?> converter : converters) { if (converter instanceof MappingJackson2HttpMessageConverter) { MappingJackson2HttpMessageConverter jsonMessageConverter = (MappingJackson2HttpMessageConverter) converter; ObjectMapper objectMapper = jsonMessageConverter.getObjectMapper(); objectMapper.disable( SerializationFeature.WRITE_DATES_AS_TIMESTAMPS ); break; } } } } ,200意味着一切都很好,显然它不是。任何的想法 ?

java spring hibernate spring-boot swagger
1个回答
0
投票

看来我已经实现了一个自定义错误控制器,从我的swagger文件生成代码,我删除它,现在一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.