如何使用RESTEasy和嵌入式jetty在main中创建父Guice注入器

时间:2015-11-19 15:37:49

标签: java java-8 guice resteasy

我在使用RESTEasy设计REST微服务时遇到了问题。我正在尝试使用嵌入式jetty服务器创建应用程序以降低部署复杂性。因此,我有一个创建jetty服务器的main方法。我需要在服务器的引导程序之前注入一些对象。

我的主要看起来像这样:

func myRequest(
    method: Alamofire.Method,
    _ URLString: URLStringConvertible,
    parameters: [String: AnyObject]? = nil,
    encoding: ParameterEncoding = .URL,
    headers: [String: String]? = nil,
    requestReady: ((Request) -> Void)?) {

    pendingRequestsQueue.addOperationWithBlock { [weak self] in
        if let strongSelf = self {
            let request = strongSelf.request(method, URLString, parameters: parameters, encoding: encoding, headers: headers)

            if let requestReady = requestReady {
                requestReady(request)
            }

            request.resume()
        }
    }
}

如何获取Injector单例实例以便我可以注入我的app对象?

1 个答案:

答案 0 :(得分:0)

也将App的创建委托给了注入器。并将args传递给模块的构造函数。像这样:

class App {
    @Inject
    public App(@Named("args") String[] args, Server jettyServer) {
        //...
    }
}

class MyModule extends AbstractModule {
    private final String[] args;

    public MyModule(String[] args) {
        this.args = args;
    }

    @Override
    protected void configure() {
        bind(String[].class).annotatedWith(Names.named("args")).toInstance(args);
    }
}

main(String[] args) {
    App app = Guice.createInjector(new MyModule(args)).getInstance(App.class);
}