当前位置: 首页 > 知识库问答 >
问题:

由于循环引用,Spring boot应用程序未加载Swagger rest服务

太叔鹏云
2023-03-14

我们有一个带有300个Rest服务的Spring Boot应用程序,我们正试图为其生成一个招摇过市的文档。我们集成了Swagger,并将所需的Json参数添加到POJO中。当我们启动应用程序时,服务器甚至在15分钟左右也不会启动,当我们查看日志时,它会以以下格式显示。

2019-07-29 10:43:20,299 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Adding collectionElement type Lcom/test/google/model/section/period/timetable/TimeTableTuesdayPeriod;
2019-07-29 10:43:20,299 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Recursively resolving dependencies for collectionElement type Lcom/test/google/model/section/period/timetable/TimeTableTuesdayPeriod;
2019-07-29 10:43:20,300 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Adding type Lcom/test/google/model/section/period/Period; for parameter period
2019-07-29 10:43:20,300 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Recursively resolving dependencies for type Lcom/test/google/model/section/period/Period;
2019-07-29 10:43:20,300 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Adding type Lcom/test/google/model/section/period/PeriodTimeTable; for parameter periodTimeTable
2019-07-29 10:43:20,301 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Recursively resolving dependencies for type Lcom/test/google/model/section/period/PeriodTimeTable;
2019-07-29 10:43:20,301 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Adding type Ljava/util/Set<Lcom/test/google/model/section/period/timetable/TimeTableWednesdayPeriod;>; for parameter timeTableWednesdayPeriod
2019-07-29 10:43:20,301 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Adding collectionElement type Lcom/test/google/model/section/period/timetable/TimeTableWednesdayPeriod;
2019-07-29 10:43:20,301 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Recursively resolving dependencies for collectionElement type Lcom/test/google/model/section/period/timetable/TimeTableWednesdayPeriod;
2019-07-29 10:43:20,302 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Adding type Lcom/test/google/model/section/period/Period; for parameter period
2019-07-29 10:43:20,302 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Recursively resolving dependencies for type Lcom/test/google/model/section/period/Period;
2019-07-29 10:43:20,302 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Adding type Lcom/test/google/model/section/period/PeriodTimeTable; for parameter periodTimeTable
2019-07-29 10:43:20,303 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Recursively resolving dependencies for type Lcom/test/google/model/section/period/PeriodTimeTable;
2019-07-29 10:43:20,303 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Adding type Lcom/test/google/model/section/period/PeriodTimeTable; for parameter periodTimeTable
2019-07-29 10:43:20,304 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Recursively resolving dependencies for type Lcom/test/google/model/section/period/PeriodTimeTable;
2019-07-29 10:43:20,304 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Adding type Ljava/util/Set<Lcom/test/google/model/section/period/timetable/TimeTableSaturdayPeriod;>; for parameter timeTableSaturdayPeriod
2019-07-29 10:43:20,305 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Adding collectionElement type Lcom/test/google/model/section/period/timetable/TimeTableSaturdayPeriod;
2019-07-29 10:43:20,305 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Recursively resolving dependencies for collectionElement type Lcom/test/google/model/section/period/timetable/TimeTableSaturdayPeriod;
2019-07-29 10:43:20,306 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Adding type Lcom/test/google/model/section/period/Period; for parameter period
2019-07-29 10:43:20,306 DEBUG springfox.documentation.schema.DefaultModelDependencyProvider [main] Recursively resolving dependencies for type Lcom/test/google/model/section/period/Period;

似乎应用程序递归地试图一次又一次地访问相同的对象,使其成为一个循环引用问题。

下面是我们用于POJO的代码和注释:

@Entity(name="sections")
@JsonIdentityInfo(scope=Section.class,generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
public class Section implements Serializable {


    @Id
    @Column(unique=true, nullable=false, length=19)
    private long id;
    @OneToMany(mappedBy="section")
    private Set<ReportCardTemplate> reportCardTemplate;
    @OneToMany(mappedBy="section")
    private Set<Admission> admission;
    @ManyToOne(optional=false)
    @JoinColumn(name="section_type_id", nullable=false)
    private SectionType sectionType;


@Entity(name="report_card_templates")
@JsonIdentityInfo(scope=ReportCardTemplate.class, generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
public class ReportCardTemplate implements Serializable {

    @Id
    @Column(unique=true, nullable=false, length=19)
    private long id;
    @ManyToOne(optional=false)
    @JoinColumn(name="section_id", nullable=false)
    private Section section;


@Entity(name="admissions")
@JsonIdentityInfo(scope=Admission.class,generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
public class Admission implements Serializable {

    @Id
    @Column(unique=true, nullable=false, length=19)
    private long id;
    @ManyToOne(optional=false)
    @JoinColumn(name="actor_id", nullable=false)
    private Actor actor;
    @OneToOne(optional=false)
    @JoinColumn(name="subject_preference_id", nullable=false)
    private StudentSubjectPreference studentSubjectPreference;
    @ManyToOne(optional=false)
    @JoinColumn(name="section_id", nullable=false)
    private Section section;
    @OneToMany(mappedBy="admission")
    private Set<ExamSubjectMark> examSubjectMark;

非常感谢您对这个问题的任何帮助。。。。提前感谢!

共有1个答案

从开济
2023-03-14

您可以在循环依赖项上使用ApiModelProperty(hidden=true)注释

...
@ApiModelProperty(hidden = true)
private Section section;
 类似资料:
  • 在我的项目中,我想使用特定于环境的属性文件。例如,如果我在开发中运行它,它应该使用应用程序。dev.properties,对于生产,它应该使用应用程序。产品属性等等。 我有下面两个文件在我的资源文件夹。 application.properties(用于生产) application.dev.properties(用于开发) 我有一个属性像下面的每个文件。 为了刺激 给德夫 我有一门课,如下所示

  • 我在一个应用程序,我试图改变主题(动态)。 正确编译所有内容,但在中,我收到了此错误消息。 拒绝应用http://localhost:4200/vendor/theme-light.css的样式,因为它的MIME类型(text/html)不是受支持的样式表MIME类型,并且启用了严格的MIME检查。 我的文件结构是这样的,路径正确 我的主题更改代码如下所示 现在,我真的不明白为什么会这样。我是不是

  • 我的React客户端的Dockerfile: 我的Express后端的Dockerfile: 我的码头工人。项目根目录中的yml文件: 我的服务器。我的后端文件夹下的js文件: 当我跑的时候: 我得到以下输出在我的终端: 我的后端以代码0退出,我无法加载我的应用程序。我的后端正在运行。 我做错了什么,如何让我的React-Express Node应用程序与Docker Comment一起运行?

  • 我正在将一个非常基本的web应用程序部署到Google应用程序引擎。我使用的是Springboot,我可以在本地很好地运行应用程序,但当我部署到Google时,应用程序引擎不会启动实例。我在启动时配置了一个云SQL数据源。 我有云sql配置属性配置src/main/Resources/application.properties.App Engine似乎找不到这些属性,所以它无法正确设置Cloud

  • 问题内容: 在我正在开发的应用程序上,我已经花了好一阵子了。经过数小时的尝试,调试了一个问题,该问题是接口锁定,什么也没发生,我发现这是可怕的While循环。请参阅下面的示例并运行它。通过单击按钮启动while循环时,您将无法在屏幕上执行任何其他操作。在这种情况下,只需按下一个简单的警报按钮即可。 如何有一个循环需要运行直到计数完成并且仍然能够在我的应用程序中执行其他任务?我还应该注意,我已经使用