Inject注入的问题

public class ModelController<T extends ModelService, M extends Model> extends BaseController implements IModelController {

    @Inject //我现在想用Inject直接注入 但是发现注入的是 实现类的父类 ModelService
    protected T service;

    private Class<M> modelClazz;

    public ModelController() {
        //之前是通过得到继承类上的泛型参数获取到service的class 然后用aop注入service 这样是没问题的
        //service = Aop.get((Class<T>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0]);
    }
}

//这个是子类代码 
public class MenuController extends ModelController<MenuService, Menu> {

    @AuthorityKey("view")
    public void menuTree() {
        //这个时候 我想注入menuService 得到的确实ModelService 有点搞不明白
        renderResult(service.menuTree(getKv()));
    }
}

小弟学艺不精,有没有大哥指教下

评论区

JFinal

2020-05-26 16:21

在父类中用的泛型,但注入是在子类发生的,类型信息丢失掉了

用 Aop.get 就挺好, 因为你这个本身就是在父类中存放 service , 子类中是不需要增加代码的

久伴轻尘

2020-05-27 09:06

@JFinal 波总我昨天问了一下朋友,他跟我一样的实现,不过用的是springboot @Autowired注解,类型信息丢失是否在@Inject 里面发生的呢

逍遥一生

2020-06-03 14:31

我也遇到这样的问题 没法注入

热门反馈

扫码入社