【发布时间】:2010-10-27 11:21:24
【问题描述】:
我的后备 bean 中有一个 @PostConstruct init() 函数,它执行冗长的数据库查询。
支持 bean 是 @SessionScoped。
每次我执行 Ajax 查询时,我都会点击 init() 并且数据库查询会再次触发。
在触发数据库查询之前,我是否需要在我的 init() 中检查生命周期阶段?还是应该将详细信息存储在更持久的对象中,例如当前用户?
最好的问候, 艾伦
【问题讨论】:
我的后备 bean 中有一个 @PostConstruct init() 函数,它执行冗长的数据库查询。
支持 bean 是 @SessionScoped。
每次我执行 Ajax 查询时,我都会点击 init() 并且数据库查询会再次触发。
在触发数据库查询之前,我是否需要在我的 init() 中检查生命周期阶段?还是应该将详细信息存储在更持久的对象中,例如当前用户?
最好的问候, 艾伦
【问题讨论】:
@PostConstruct for @SessionScoped bean 在每个用户会话中只执行一次,因此它是初始化 bean 的正确位置。确保 bean 确实在会话范围内,并且它的多次执行实际上并不是来自不同的用户(=> 会话)
【讨论】: