【问题标题】:Spring Session JDBC - error using @Autowired ObjectsSpring Session JDBC - 使用 @Autowired 对象时出错
【发布时间】:2020-02-27 11:42:53
【问题描述】:

为了将会话保存在数据库中,我使用此示例 here 实现了 Spring Session JDBC。我在使用带有会话范围的@Autowired 时遇到问题: 我有 Java 类 Dump 如下:

public class Dump 
{
    private String someName;

    public Dump(){}

    public Dump(String someName) {
        this.someName = someName;
    }

    public String getSomeName() {
        return someName;
    }

    public void setSomeName(String someName) {
        this.someName = someName;
    }
}

然后我在 SESSION_SCOPE 中注册这个 bean,如下所示:

@Configuration
public class DumpConfig{

    @Bean
    @Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
    public Dump getDump() {
        return new Dump();
    }

}

在控制器中,我正在接线并尝试使用:

@Controller
@RequestMapping("/")
public class HomeController {

    @Autowired
    private Dump dump;

    @GetMapping("/dump")
    @ResponseBody
    public String demo() {
        return dump.getSomeName();
    }
}

当我尝试运行时出现此错误:

Failed to convert from type [java.lang.Object] to type [byte[]] for value 'Dump@35b2136e' nested exception is org.springframework.core.serializer.support.SerializationFailedException

【问题讨论】:

  • 您的Dump 必须是Serializable,否则它不会存储在会话中。 @Autowired 不是问题,而是在会话中存储某些内容的影响。
  • @M.Deinum 问题是我使用的库无法序列化它自己的 Java 类。

标签: java spring spring-boot spring-mvc spring-session


【解决方案1】:

请参阅下面提到的链接中的视频(大约 1:14),演讲者说这个问题在 spring 3.0 中通过提供不可序列化 bean 的代理来解决,该代理从当前应用程序上下文中获取一个实例(关于反序列化)。

https://www.infoq.com/presentations/Whats-New-in-Spring-3.0

【讨论】:

    猜你喜欢
    • 2021-01-06
    • 2013-10-12
    • 2018-09-25
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    相关资源
    最近更新 更多