我应该在静态初始化块中获取资源吗?

时间:2017-02-06 14:50:33

标签: java java-ee

所以我正在为EAR构建实用程序JAR,并且我有一个类,它提供需要XML字符串的静态方法。我在我的JAR中嵌入了一个XML文件作为资源,我在类初始化时在静态块中读取它:

static{
    try {
        base = IOUtils.toString(CartSessionFactory.class.getResourceAsStream("/createcartTemplate.xml"));
        if(base==null){
            throw new Exception("createcartTemplate.xml not found as a resource");
        }
        //check the file correctness
        //[...]
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
一位编码员告诉我他对这个设计感到震惊,但无法清楚地解释原因(但建议改为使用Singleton)。它似乎工作。是不好的设计,为什么?

1 个答案:

答案 0 :(得分:0)

我会把这个依赖注入到类中,而不是硬编码到它中。 测试此模块并不像将资源注入其中那样容易。