【发布时间】:2020-10-28 06:27:13
【问题描述】:
我有Dao<T> 接口,它由BaseDao<T> 类和BaseDao<T> 实现,后来被UserDao 类等许多子类扩展。
interface Dao<T>{}
abstract class BaseDao<T> implements Dao<T>{}
class UserDao extends BaseDao<User>{}
下面是guice绑定
bind(new TypeLiteral<Dao<User>>() {
}).annotatedWith(Names.named("UserDao")).toProvider(UserDaoProvider.class);
提供者看起来像..
public class UserDaoProvider implements Provider<UserDao> {
@Override
public UserDao get() {
return new UserDao();
}
}
现在我正在尝试从 guice 注射器中获取它
injector.getInstance(Key.get(new TypeLiteral<Dao<User>>() {
}, Names.named("UserDao")));
但我收到null
请帮助解决问题。
【问题讨论】:
-
您是否正确注册了您的模块?
Guice.createInjector(new ServletModule(), new YourDaoModule())?
标签: java dependency-injection guice guice-servlet