首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
依赖注入问题
vimer
2019-01-05 11:54
如果一个接口有两个实现类,在注入接口的时候,我需要选择一个其中的一个实现类注入,要怎么样实现?这时候就只能注入具体的实现类,不能注入接口吗?
能否像Guice一样,增加选择注入类的功能?
项目:
JFinal
评论区
JFinal
2019-01-05 16:20
@Inject 注解可以指定被注入的类型:
@Inject(Aaa.class)
也可以事先建立映射:
Aop.addMapping(Aaa.class, AaaImpl.class);
看一下相关文档:
https://www.jfinal.com/doc/4-6
回复
vimer
2019-01-14 18:42
@JFinal
可能我描述的不够清楚,我的意思是:
如Aaa.class有两个实现类,AaaImpl1.class和AaaImpl2.class
现在使用时我需要注入的时候就会有无法选择的问题,建立映射只能选择一个实现类建立吧,没有办法选择两个
回复
JFinal
2019-01-14 22:43
@vimer
映射是一一对应的,不能动态变动,否则会有线程安全问题,但是可以实现你的需求
先是选择一个最常用的实现类来进行映射,然后在需要打破映射的地方使用下面的两种方式:
1:在 @Inject 中指定实现类
@Inject(AaaBbbImpl.class)
Aaa aaa;
2:让承载类型为实现类
@Inject
AaaBbbImpl
回复
vimer
2019-01-15 16:28
@JFinal
明白了,非常感谢,不过您说的线程安全问题我还是不大明白,回去再认真看看源码吧
回复
发送
我要反馈
热门反馈
扫码入社
@Inject(Aaa.class)
也可以事先建立映射:
Aop.addMapping(Aaa.class, AaaImpl.class);
看一下相关文档:
https://www.jfinal.com/doc/4-6