我正在創建庫並幫助人體工程學,我將在應用程序啓動時創建的注入器傳遞給庫中的不同組件,以便用戶可以在特定上下文中執行getInstance()
,計劃在哪裏粘貼他們的@Inject
註釋。Guice的全球注射器
這裏的API設計的一個例子:
public static void main(String[] args) {
// Main injector is created here behind the scenes.
ApexApplication app = new ApexApplication()
app.get("https://stackoverflow.com/users/:id", context -> {
// Users can do this instead of @Inject UserDAO dao
UserDAO dao = context.getInstance(UserDao.class)
User user = dao.findUserById(context.param("id"))
//...
})
app.start();
}
這裏是鏈接到關鍵實施細節清晰:
我知道最好的做法WRT吉斯噴射器是創建一個且只有一個在整個應用程序,用它來注入所有的依賴關係,然後把它遠;然而,鑑於我想要實現的目標,是否會推薦這種方法,或者我應該考慮另一種模式?
如果你爲Guice模塊引入一個類似'MyModuleHelper'的並行類,你可以避免繞過注入器,並且更加明確地訪問它。在其中,填充通過調用模塊上的getInstance()來初始化的'public static final'字段(或者helper類中的靜態方法)。然後,直接從代碼庫中直接使用這些常量字段,而不是通過噴油器。 – Jameson
@Jameson我不確定我是否關注。你能舉個例子嗎? – kshep92