Java注解的继承
路途再远,终有尽头;痛苦再深,终会结束
注解继承的说明
1、首先要想 Annotation 能被继承,需要在注解定义的时候加上 @Inherited,并且如果要被反射应用的话,就需要还有个事 @Retention(RetentionPolicy.RUNTIME) 标识
2、JDK 文档中说明的是:只有在类上应用 Annotation 才能被继承,而实际应用结果是:除了类上应用的 Annotation 能被继承外,没有被重写的方法的 Annotation 也能被继承;
3、当方法被重写后,Annotation 不会被继承
4、Annotation 的继承不能应用在接口上
Spring 事务注解 @Transactional
@Transactional 可以作用于接口、接口方法、类以及类方法上。但是 Spring 小组建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效。另外, @Transactional 注解应该只被应用到 public 方法上,这是由 Spring AOP 的本质决定的(从上面的 Spring AOP 事务增强可以看出,就是针对方法的)。如果你在 protected、private 或者默认可见性的方法上使用 @Transactional 注解,这将被忽略,也不会抛出任何异常。
SpringMVC 的 @RequestMapping 注解
使用反射会发现并没有把 @RequestMapping 继承过来,但是子类能享有它所带来的的效果,但是如果父类为接口则无效,因为接口可以多实现,类是单继承
参考资料
https://www.cnblogs.com/flying607/p/8295139.html
部分原文链接:https://zxmsdyz.iteye.com/blog/1974249