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())); } }
小弟学艺不精,有没有大哥指教下
用 Aop.get 就挺好, 因为你这个本身就是在父类中存放 service , 子类中是不需要增加代码的