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/xhy-shine/p/11138183.html
https://www.cnblogs.com/chenkeyu/p/7895751.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM