【问题标题】:Spring Data Redis cache in json throws ClassCastExceptionjson中的Spring Data Redis缓存抛出ClassCastException
【发布时间】:2020-09-29 21:06:39
【问题描述】:

this 是 spring-data-redis + 缓存的示例项目。我想在redis中以纯json的形式存储缓存,所以我用spring提供的objectMapper配置了GenericJackson2JsonRedisSerializer

目前,当我运行测试(应用程序中唯一的测试)时,出现以下错误:

java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class com.github.bilakpoc.rediscachedemo.generated.model.ModelImport (java.util.LinkedHashMap is in module java.base of loader 'bootstrap'; com.github.bilakpoc.rediscachedemo.generated.model.ModelImport is in unnamed module of loader 'app')
    at com.github.bilakpoc.rediscachedemo.service.ImportService$$EnhancerBySpringCGLIB$$14512ec6.getImportById(<generated>) ~[classes/:na]

请任何人分享如何正确配置redis以将缓存存储在json中?

谢谢

【问题讨论】:

    标签: spring-boot redis spring-data spring-data-redis


    【解决方案1】:

    感谢转载者。您不需要从代码中配置 redis 缓存。唯一的问题是“生成的代码不可序列化”在https://github.com/bilak-poc/redis-cache-demo/pull/1 中向您发送修复程序

    供日后参考

            <plugin>
                <groupId>org.openapitools</groupId>
                <artifactId>openapi-generator-maven-plugin</artifactId>
                <version>${openapi-generator-maven-plugin.version}</version>
                <executions>
                    <execution>
                        <id>openapi</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <apiPackage>${openapi-generator.package}.api</apiPackage>
                            <configOptions>
                                <interfaceOnly>true</interfaceOnly>
                                <serializableModel>true</serializableModel>
                            </configOptions>
                            <generatorName>spring</generatorName>
                            <invokerPackage>${openapi-generator.package}.handler</invokerPackage>
                            <inputSpec>${pom.basedir}/src/main/resources/openapi/openapi.yaml</inputSpec>
                            <modelPackage>${openapi-generator.package}.model</modelPackage>
                            <supportingFilesToGenerate>ApiUtil.java</supportingFilesToGenerate>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
    

    serializableModel 应该被添加到 configOptions。 @EnableCaching 就足够了。

    我把 cmets 留在了CacheConfig。实际上找到了Jackson2JsonRedisSerializer 的另一种解决方法,然后我深入挖掘并发现了真正的问题。

    【讨论】:

    猜你喜欢
    • 2020-04-25
    • 2022-08-03
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2018-11-29
    • 2020-02-10
    • 2021-12-16
    相关资源
    最近更新 更多