2

Rest Controller の Response として Request スコープ (プロトタイプ) Bean があり、 Exception を取得していますが、機能していません

エラーメッセージ「Type definition error: [simple type, class org.springframework.context.expression.StandardBeanExpressionResolver]; nested exception is com.fasterxml.jackson」で示唆されているように、プロパティファイルで spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false を試しました.databind.exc.InvalidDefinitionException: クラス org.springframework.context.expression.StandardBeanExpressionResolver のシリアライザーが見つからず、BeanSerializer を作成するためのプロパティが見つかりません (例外を回避するには、SerializationFeature.FAIL_ON_EMPTY_BEANS を無効にします) (参照チェーンを介して: com.epic.dcms.kyc .beans.MainResponse$$EnhancerBySpringCGLIB$$82085c99[\"targetSource\"]->org.springframework.aop.target.SimpleBeanTargetSource[\"beanFactory\"]->org.springframework.beans.factory.support.DefaultListableBeanFactory[\ "beanExpressionResolver\"])"

機能しなかった場合、循環依存関係があり、例外がスローされました

@RequestScope アノテーションを @scope アノテーションに変更しても問題は解決しませんでした

この例外は、MainResponse が Response として使用された場合にのみ発生することに気付きました。

  Bean
        @RequestScope
        @Component
        public class MainResponse implements Serializable{
        //fields and getters and setters
        }

  Controller class
         @PostMapping("/uploadFile")
            public MainResponse uploadFile(@RequestParam("file") MultipartFile file) throws FileStorageException {
                String fileName = fileStorageService.storeFile(file);

                response.putPayLoad(true,"fileName",fileName)
                        .putPayLoad("ContentType",file.getContentType())
                        .putPayLoad("size",file.getSize());

                return response;
            }

MainResponse Bean から @RequestScope を削除すると、正常に動作します。これを修正する方法はありますか??

4

1 に答える 1