是否有可能同时与罪犯和成员一起使用@inject?

时间:2016-01-06 18:39:47

标签: java dependency-injection guice

这是我的代码:

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和一个班级成员吗?

1 个答案:

答案 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库的版本