使用注入服务序列化域实例?
Posted
技术标签:
【中文标题】使用注入服务序列化域实例?【英文标题】:Serialize Domain instance with service injected? 【发布时间】:2018-03-14 02:14:07 【问题描述】:我有一个域对象,它跟踪使用注入的 Spring Security 服务 def springSecurityService
创建、删除和修改它的用户。这些对象的实例保存在会话中,并且在生产中会话被持久化到数据库以进行会话故障转移。 Jetty
会话存储类对会话中的对象进行序列化,但如果会话包含一个不可序列化的对象,而 springSecurityService
不是,则会引发异常。有没有办法将springSecurityService
实例标记为已忽略,transient
可能是,但仍然可以访问service
?我试过了。
static transients = ['springSecurityService']
没有帮助。
【问题讨论】:
【参考方案1】:尝试使用,
transient SpringSecurityService springSecurityService
static transients = ['springSecurityService']
第一条语句告诉Java,不要序列化;而第二个告诉 Grails 不要持久化。
注意:顺便说一句,在域类中注入服务是discouraged。
【讨论】:
请注意,Grails 团队不鼓励在 Domain 类中注入服务,因为每次从数据库加载 bean 实例时都需要注入 bean,从而降低性能:docs.grails.org/latest/guide/…跨度>以上是关于使用注入服务序列化域实例?的主要内容,如果未能解决你的问题,请参考以下文章
.NET Core 5 RawRabbit 序列化器/依赖注入问题
IJSRuntime 忽略服务器端 Blazor 项目中的自定义 json 序列化程序
Fastjson 反序列化 Jndi 注入利用 JdbcRowSetImpl 链