托管bean中的@PostConstruct方法

时间:2013-10-27 21:40:53

标签: java java-ee

@PostConstruct方法中使用此类型的代码行:

listA = myService.getMylist();

所以如果我们在托管bean(JEE应用程序)中的@PostConstruct方法中使用它,你会给我什么建议:

  • 使用try catch块。
  • 请勿在{{1​​}}方法中使用此类代码行。

因为当我测试我的应用程序时,我的数据库已满,但是当我将它交付时,db必须为空,并且管理员将更新de DB。所以当然会有一些例外。

2 个答案:

答案 0 :(得分:1)

在几乎所有情况下,最佳做法是在没有元素而不是仅将引用指向null的情况下初始化空集合。因此,如果您正在设计服务层,则不要返回空集合 - 而是返回空集合。此外,如果这是您的设计的必要条件,列表不能为空(这意味着它是一个不可接受的条件),您必须抛出一个错误来指示无效条件并停止bean的初始化。

答案 1 :(得分:0)

这取决于您的设置。只要处理任何异常,两者都是合适的。对于每个项目,这可以简单地遍历List,如果没有项目(或者为null),则不对该对象执行任何操作。如果它是一个实际的错误状态,没有项目返回(即页面无法在没有该项目的情况下运行),则抛出异常。

也许最好将异常抛出到从数据库获取数据的代码中(例如在服务方法中,而不是DAO,或者你拥有的任何等效代码)?这样您就可以从托管bean中删除功能,并可以在框架内处理它。或者更适合使用List集合,只需确保在返回之前对其进行实例化。 (即List<Object> listA = new ArrayList<Object>; ...*populate list* .... return listA;)然后当你迭代时,什么都不会被调用。