java - 使用 Guice 在方法内创建对象的正确方法是什么
问题描述
使用 Guice 在 Singleton 对象的方法内创建对象的正确方法是什么。
如果我有下面这样的代码,那么创建 Class2 实例的正确方法是什么?Class1 是单例的,每次调用 search 时都需要创建一个新的 Class2 实例(所以我不能用构造函数字段注入它......)如果需要,我将重新组织代码。
@Singleton
final class Class1 {
@Inject
private Class1(...){...}
public Class2 search(...){
Class2 newInstance=...
return newInstance;
}
}
解决方案
我想我找到了。需要为此类实例使用提供程序。在构造函数中获取类provider,使用provider.get获取实例。
就像是:
@Singleton
final class Class1 {
Provider<Class2> p;
@Inject
private Class1(Provider<Class2> pParam;...){
p=pParam;
...
}
public Class2 search(...){
Class2 newInstance=p.get();
return newInstance;
}
}
推荐阅读
- ios - Kotlin Native (iOS),使用 CValuesRef 和 CCCrypt
- regex - 将多个子文件夹/子目录重定向到一个域
- ansible - 我们可以使用没有 ansible tower 的 playbook 来跟踪 windows 中无法访问的主机吗
- python - Python string.replace() 函数仅替换字符串的一半
- powerbi - SSAS 模型更新,但 Power BI 报告没有
- java - java Files.delete 会在没有写权限的情况下删除文件吗?
- r - 为什么 read.csv2 工作得很好,但 read.csv2.sql 显示错误/警告?
- apache-kafka - 如何验证 Kafka 生产者 Batch 是否正常工作
- c# - Asp.Net 在多台服务器的一个解决方案下部署多个项目
- android - 实时 firebase 数据库中未创建根节点