我正在编写一个将由现有应用程序使用的
Java库.我正在使用依赖注入,因此测试更容易,我熟悉Spring,因此我计划在测试时使用它来管理依赖注入.最终将使用该库的应用程序不是基于Spring的,但它目前也不使用任何类型的任何IoC / DI容器.我的问题是,如果不使用Spring或Guice,注入依赖项的最佳方法是什么?我应该考虑像工厂方法那样实例化和连接对象吗?依赖项都在库中,因此让应用程序实例化每个依赖项以创建主对象似乎不合适.
解决方法
what’s the best approach for injecting dependencies if Spring or Guice are not used?
如果您的图书馆是用DI友好的习语写的.它应该相当容易用作一个straitforward Java API.想想你过去的春天经历.有几个库与弹簧模型完全吻合但是在春天之前写的.我没有看到任何不好的新的后跟几个setXX,然后调用真正的工作方法.只是要格外小心,因为除其他外,你的客户可能忘记调用thouse init方法,这些方法可靠地调用.
Should I consider something like a factory method to instantiate and wire the objects? The dependencies are all inside the library,so it doesn’t seem appropriate to have the application instantiate each dependency to create the main object.
让客户端应用程序决定.您正在提供一个图书馆.让API客户端连接自己的对象.举个例子.稍后,可以使用相同的示例在客户端的域上创建工厂方法.也许客户端应用程序有自己的配置方式,如果您的库提供的API足够灵活,可以利用它.
或许你可以包括guice.许可证是Apache.就像整个Java本身一样.