java允许静态方法访问DAO
我正在使用SpringMVC构建一个web应用程序,它使用@RequestBody/Jackson将JSON请求解析为POJO
当Jackson创建POJO时,我无法自动连接我的DAO服务,因此我创建了一种通过实用方法静态访问DAO的方法
private static DAOService daoService;
public static User getUserById(int id)
{
return daoService.getUserDao().getById(id);
}
我让spring在应用程序启动时填充daoService,它只是我DAO的一个持有者
我这样做是因为Jackson创建的实体需要从数据库中检索其他子实体来完成自身
这似乎有效,但我担心这是否安全。有人能预见到这方面的任何问题吗
我假设它是安全的,因为daoService从未发生过变异,getById方法只对自己的参数起作用
谢谢
编辑:
public void setSlot(int id) {
this.slot = EntityUtils.getSlotById(id);
}
# 1 楼答案
你的建议是有效和安全的
如果您想让bean不受反序列化过程的影响,可以创建一个Jackson转换器,将
Long
转换为Bean
。这需要一点管道工,但可能值得:首先,使用自定义转换器为字段添加注释:
然后用
@Autowired
注释SlotDao
来定义转换器。转换器从Long
转换为Slot
:最后,jackson必须配置一个定制的Spring instanciator。因此
SlotConverter
将由Spring实例化和配置:以下代码将使用插槽id反序列化
Foo
:希望有帮助