【发布时间】: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