我有一个 @SessionScoped ApplicationBean 用于存储用户登录信息并将其成功注入到其他托管 bean 中,如此处所述。
我也通过 @ManagedProperty 注释使用我的 Dao 接口,但我觉得我的用法有问题。
假设 StockDao 有一个公共方法 listStocks(String companyCode) ,并且 companyCode 在用户登录时存储在 ApplicationBean 中。
所以我的托管bean像这样调用DAO层
@ManagedProperty(value = "#{appBean}")
ApplicationBean appBean;
public void getStockList() {
return stockDao.listStocks(appBean.getCompanyCode());
}
这在 sql 需要 companyCode 的任何地方重复。
我觉得如果我的 DAO 层知道 companyCode(这意味着将 ApplicationBean 注入 DAO)会更好,我应该使用如下方法
public void getStockList() {
return stockDao.listStocks();
}
所以问题是,哪个 API 设计会更好,如果您投票支持第二个,我如何将 @SessionScoped bean 注入 DAO 层?