【发布时间】:2013-01-21 11:15:42
【问题描述】:
我有一个@SessionScoped ApplicationBean 用于存储用户登录信息并将其成功注入到其他托管 bean 中,正如 here 所告知的那样。
我也通过@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 层?
【问题讨论】: