小编the*_*man的帖子

我应该如何对使用google guava库的代码进行单元测试,尤其是io包中的内容?

番石榴中的许多功能都是由静态方法提供的.我还没有弄清楚如何合并使用番石榴库和良好的依赖注入实践.

例如,如果我要使用

Files.readLines(File, Charset)
Run Code Online (Sandbox Code Playgroud)

然后我发现我很难编写一个不接触文件系统的单元测试,我只想进行集成测试.

我想我可以为我感兴趣的所有人写一个适配器吗?但这可能最终会成为很多工作......

我觉得很奇怪,番石榴库来自同一组提供吉斯人,写博客帖子喜欢

java unit-testing guava

7
推荐指数
1
解决办法
2110
查看次数

一般Guice表现指南

我目前有一个命令行工具,它使用Guice及其扩展程序.

完成该工具的功能后,我确定性能不合标准,并使用简单的hprof开始分析.

这已经指出,仅创建Injector是一个重要的性能问题.我通常避免在模块中做任何实际工作,并为Providers保留计算密集型工作......

有了这个,Guice的一般性能指南是什么?我应该避免使用@AssistedInject和FactoryModuleBuilders吗?尽可能避免@Singletons?确保所有绑定都是显式的并避免JIT绑定?

我一直在搜索,但除了人们说它真的很快之外,它无法真正找到解决基本Guice性能的问题.

java performance guice

6
推荐指数
1
解决办法
2708
查看次数

如何使用 JPA 2.0 保留子类型列表?

我有一个管理器类,其中包含可访问元素的列表,我想使用 JPA/Hibernate 将其保留在数据库中:

@Entity
class Elements {
  void accept(Visitor v) {...}
  @? List<Visitable> elements;  // or List<AbstractElement>
}

@? class AbstractElement implements Visitable {}

@Entity class Element1 extends AbstractElement {}
@Entity class Element2 extends AbstractElement {}

class ElementDAO {
  void saveElements(Elements e, EntityManager em) {
    em.persist(e);
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了多种方法。我尝试将 AbstractElement 标记为 @MappedSuperclass,但是 Hibernate 无法找出正确的 Visitable 类型,并且不允许我用 @OneToMany(targetEntity=AbstractElement.class) 标记它。我尝试更改列表以包含 AbstractElement 但 Hibernate 抱怨它无法实例化抽象类。我还尝试在 AbstractElement 类上使用 TABLE_PER_CLASS 继承策略,并得到相同的“无法实例化”错误。

我能做些什么来解决这个问题吗?这到底可行吗?

我在这个网站上搜索了许多有关 jpa 和继承的类似问题,但没有一个建议有效。

更新:所以看来问题不在于继承或抽象类本身的方法,而在于我试图使用 EntityManager::merge() 而不是 EntityManager::persist()。我认为这与合并创建实体的副本有关。

因此,根据这些新知识,我是否只需要承认合并不能用于抽象类的集合?或者有什么方法可以添加 hibernate 可以调用的复制构造函数?

java persistence hibernate jpa-2.0

5
推荐指数
1
解决办法
1556
查看次数

带有构造函数参数的Dagger模块?

在Guice中,我完全控制了构造模块的时间,并使用了一些模块和我安装的构造函数参数.

然而,在Dagger中,引用其他模块的方法是通过@Module包含注释,并没有给我提供创建要安装的模块的相同方法.

是否有可能从具有构造函数参数的多个模块创建一个理智的ObjectGraph?特别是一个可以使用匕首编译器,而不会遇到循环图的人?

dependency-injection dagger

5
推荐指数
1
解决办法
5288
查看次数