SpringDoc は手動で Schemas/ApiModels メソッドを追加します

1. 問題を見つける

        Knife4Jを利用する際にバージョンアップを行ったが、新しいKnife4JではSpringfoxのメンテナンスをやめ、文書仕様としてSpringDocを使用した プロジェクトをspringdocを使用するように移行した際に、エンティティクラスリスト(swagger models)が手動で不足していることが判明エンティティ クラスが維持されており、コントローラーから返されたエンティティのみがリストに表示されるため、バグの修正に着手しました。

2. 問題を解決する

        1. 公式ドキュメントに従ってモデルを追加します

  @Bean
    open fun openAPI(): OpenAPI {
        val docConfig = voidConfiguration.docConfig
        val info = OpenAPI()
            .info(Info()
                .contact(Contact()
                    .name(Meta.ADMINISTRATOR)
                    .email("xxx")
                    .url("xx")
                )
                .title(docConfig.title)
                .version(Meta.VERSION)
                .description(docConfig.description)
                .termsOfService("xxxx")
                .license(License().name("Apache 2.0").url("xxx"))
            )
        //官方文档从此处添加models/schemas
        val components = Components()
        components.addSchemas("测试资源", Schema<SystemResource>())
        info.components(components)
        return info
    }

        2. 追加が完了した後、有効になっていないことが判明しました。

                /doc.html にアクセスするときにエンティティ クラス リストを追加すると、手動で追加されたエンティティ クラスがないことがわかります。

        3. コールチェーンに従って検索を開始します

                

       AbstractOpenApiResource クラスで構成呼び出しが見つかりました

if (springDocConfigProperties.isRemoveBrokenReferenceDefinitions())
				this.removeBrokenReferenceDefinitions(openAPI);

         4. 公式ドキュメントに従って設定を変更します。

springdoc.remove-壊れた参照定義

true

Boolean

壊れた参照定義の削除を無効にします。

壊れた参照定義の削除を無効にする

追加した後、プロジェクトを再起動すると、手動で追加したエンティティ クラスがすでにリストに含まれていることを確認できます。

3. お金を節約する

        springboot で springdoc を使用してエンティティ クラスを追加すると、リストにソリューションが表示されません

application.yml         に 構成を追加します

springdoc:
  remove-broken-reference-definitions: false

おすすめ

転載: blog.csdn.net/qq_36532805/article/details/131984068