这是我的代码:
public class RoutingRequestUrlRepository implements IRoutingRequestUrlRepository {
String fileName;
RandomAccessFile randomAccessFile;
int chunkSizeInLines;
private IFileHandler<String> fileHandler;
@Inject GlobalSettings globalSettings;
@Inject
public RoutingRequestUrlRepository(@Named("requests_file") String fileName,
@Named("request_sample_file") IFileHandler samplesFileHandler) {
.....
为什么globalSettings
没有被初始化?
我的语法是否正确?我可以同时@Inject ctor和一个班级成员吗?
答案 0 :(得分:2)
我认为直接注入字段和构造函数都不是一个好主意。我建议总是通过构造函数注入,因为这样做会明确地暴露出依赖关系。
无论如何,像你所做的那样注入一个字段对于guice是正确的,你可以将这个字段注入构造函数或直接注入。
您也可以使用方法注入来实例化您的字段,如下所示:
from pymongo import MongoClient
tasovshik = MongoClient()
db = tasovshik.tongler
coll = db.englishWords
f = open('book.txt')
for word in f.read().split():
coll.insert( { "word": word } } )
您还可以注入Injector类,并显式调用@Inject
public void setGlobalSettings(GlobalSettings settings) {
this.settings = settings;
}
这里解释了所有这些可能性:https://github.com/google/guice/wiki/Injections
由于您的语法似乎是正确的,如果您确定此字段未真正实例化,则应验证项目中使用的绑定或guice库的版本