Spring Swagger: Swagger не распознает контроллер при передаче объекта в @RequestBody в методе POST

#java #spring-boot #tomcat #swagger #springfox

#java #spring-boot #tomcat #swagger #springfox

Вопрос:

Я использую swagger2, и ниже приведены зависимости, которые я добавил в pom.xml .

Версия Java 1.8

pom.xml

 <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>
 

Мой код приложения: (я пробовал)

 @SpringBootApplication(exclude = { org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration.class })
@EnableJpaAuditing(auditorAwareRef = "auditorProvider")
@EnableScheduling
@EnableConfigurationProperties
@EnableSwagger2
public class MyApplication extends SpringBootServletInitializer
{

    public static void main(String[] args)
    {
        SpringApplication.run(MyApplication.class, args);
    }

    private static Class<MyApplication> applicationClass = MyApplication.class;

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

    @Bean
    AuditorAware<Long> auditorProvider()
    {
        return new AuditorAwareImpl();
    }
    
    @Bean
      public Docket productApi() {
        System.out.println("api conf:::");

        return new Docket(DocumentationType.SWAGGER_2).select()
        //    .apis(RequestHandlerSelectors.basePackage("com.package.controller.*"))
            .apis(RequestHandlerSelectors.any())
            .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                .paths(PathSelectors.any()).build();
      }
    }
 

При добавлении контроллера Test1.java , Пользовательский интерфейс Swagger работает хорошо

 import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;


import io.swagger.annotations.Api;

@RestController
@Api
public class Test1 {

    @RequestMapping(value = "/checkdomain", method = RequestMethod.GET)
    public ResponseEntity<?> checkUniqueItemNumber(@RequestHeader(value = "Origin") String origin) {
        return new ResponseEntity<>(origin, HttpStatus.OK);
    }

}
 

Вывод: выходное изображение swagger_ui

Когда я добавляю в контроллер i, e test2.java наличие Тела запроса субъекта (TestEntity.java ), сбой приложения

 import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;


import io.swagger.annotations.Api;

@RestController
@Api
public class Test2 {

    @RequestMapping(value = "/check", method = RequestMethod.POST)
    public ResponseEntity<?> checkUniqueItemNumber2(@RequestBody TestEntity origin) {
        return new ResponseEntity<>(origin, HttpStatus.OK);
    }

}
 

TestEntity.java

 import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import com.fasterxml.jackson.annotation.JsonView;

@Entity
@EntityListeners(AuditingEntityListener.class)
@Table(name = "TestEntity")
public class TestEntity implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = javax.persistence.GenerationType.IDENTITY)
    @Column(name = "RecordID")
    private Integer recordID;

    @Column(name="Url")
    private String url;

// generate getter and setter
    
    
}
 

Я получаю следующий вывод, сбой запуска приложения

Сбой приложения Image

Я думаю, что он не запускает tomcat или не выдает какой-либо вход в консоль.

Спасибо, любая помощь будет принята с благодарностью.

После исследования я обнаружил, что приложение завершается с ошибкой, когда объект содержит какое-либо отношение manytoone или один к одному.