首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
@Inject是否不支持接口,而只能注入实现类?
lyq027
2018-10-11 22:36
@Inject是否不支持接口,而只能注入实现类?
项目:
JFinal
3
1
评论区
xialinlin
2018-10-12 00:10
可以支持接口,如果是接口,需要指名是那个实现类,两种方式指名,第一种在config常量初始化那边指名,第二种,在使用的时候指名,具体参考文档
回复
JFinal
2018-10-12 09:22
如果 @Inject 用在接口上,下面两种方法选择其一:
1:在 @Inject 中指定被注入的实现类
@Inject(ServiceImpl.class)
Service service;
2: 事先映射好接口与实现类的关系
public void configConstant(Constants me) {
Aop.addMapping(Service.class, ServiceImpl.class);
}
然后用的时候可以像以往一样了:
@Inject
Service service;
此外,Aop.addMapping(Class, String) 第二个参数还可以是 String,那么你就可以通过外部配置文件来做映射了,例如外部配置文件中是下面这样:
Service=ServiceImpl.class
映射的时候可以这样:
Aop.addMapping(Service.class, PropKit.get("Service"));
上面的配置方法,可以通过修改配置文件来改变 Service 的实现类
回复
lyq027
2018-10-12 09:25
@xialinlin
好的,谢谢
回复
lyq027
2018-10-12 09:25
@JFinal
明白,谢谢
回复
JFinal
2018-10-12 09:45
@lyq027
一次映射,到处适用,用起来很方便,而且避免了在 @Inject 注解参数中写死,便于将来切换实现
回复
发送
我要反馈
热门反馈
扫码入社