泛型类的编译导致的错误
这是前段时间遇到的一个问题,确定是因为泛型编译导致的,但是特别详细的原因还没有深入研究过,遇到的同志可以看下哈。
@Controllerpublic class UserController { @Autowired UserManager userManager;上面的controller中自动注入了一个UserManager,该manager是一个泛型类。
public interface UserManager extends GenericManager<User, Long> {}public interface GenericManager<T, PK extends Serializable> { T get(PK id);}泛型接口中有一个get的接口上面该manager原始的泛型格式,因为针对用户我们有了一个分库的需求,于是本地开发进行
public interface UserManager extends GenericShardManager<User> {}如上:本地的UserManager继承的泛型接口被改变了;
就在这时,来了一个着急上线的新的小需求,改变UserController中一个方法中的一点业务逻辑,改完编译,将编译后的UserController发布测试,报错,找不到get方法。
why?在我的UserController中只是引用了一个UserManager的接口,然后通过autowire自动将实例注入,启动时无错误,使用的时候别的method都可以正常使用,但是旧的泛型接口中的方法一律提示nomethod异常。