Java Annotation注解继承方式说明
来源:互联网 发布:论语别裁 南怀瑾 知乎 编辑:程序博客网 时间:2024/06/13 08:50
有关Annotation的继承说明:
1、JDK文档中的说明是:只有在类上应用的Annotation才能被继承,而实际应用时的结果是:除了类上应用的Annotation能被继承外,没有被重写的方法的Annotation也能被继承。
2、要注意的是:当方法被重写后,Annotation将不会被继承。
3、要使得Annotation 被继承,需要在Annotation中加标识@Inherited,并且如果要被反射应用的话,就需要还有个@Retention(RetentionPolicy.RUNTIME) 标识。
4、Annotation的继承不能应用在接口上。
特别说明下spring事务注解@Transactional:
@Transactional 注解应该只被应用到 public 可见度的方法上。 如果你在 protected、private 或者 package-visible 的方法上使用 @Transactional 注解,它也不会报错, 但是这个被注解的方法将不会展示已配置的事务设置。
@Transactional 注解可以被应用于接口定义和接口方法、类定义和类的 public 方法上。然而,请注意仅仅 @Transactional 注解的出现不足于开启事务行为,它仅仅 是一种元数据,能够被可以识别 @Transactional 注解和上述的配置适当的具有事务行为的beans所使用。上面的例子中,其实正是 <tx:annotation-driven/>元素的出现 开启 了事务行为。
Spring团队的建议是你在具体的类(或类的方法)上使用 @Transactional 注解,而不要使用在类所要实现的任何接口上。你当然可以在接口上使用 @Transactional 注解,但是这将只能当你设置了基于接口的代理时它才生效。因为注解是 不能继承 的,这就意味着如果你正在使用基于类的代理时,那么事务的设置将不能被基于类的代理所识别,而且对象也将不会被事务代理所包装(将被确认为严重的)。因此,请接受Spring团队的建议并且在具体的类上使用 @Transactional 注解。
注意
当使用 @Transactional 风格的进行声明式事务定义时,你可以通过 <tx:annotation-driven/> 元素的 "proxy-target-class" 属性值来控制是基于接口的还是基于类的代理被创建。如果 "proxy-target-class" 属值被设置为 "true",那么基于类的代理将起作用(这时需要CGLIB库cglib.jar在CLASSPATH中)。如果 "proxy-target-class" 属值被设置为 "false" 或者这个属性被省略,那么标准的JDK基于接口的代理将起作用。
出自:http://yahaitt.iteye.com/blog/144565
- Java Annotation注解继承方式说明
- Annotation注解方式
- 【Java】【Annotation】Java Annotation (注解)
- JAVA Annotation 注解
- JAVA 注解(annotation)
- Java Annotation(注解)
- 11.Java注解(Annotation)
- java注解(Annotation)
- java注解Annotation
- java 注解(Annotation)
- Java注解Annotation
- Java Annotation 注解
- JAVA注解 Annotation
- Java注解Annotation详解
- Java注解Annotation详解
- java 注解Annotation
- java Annotation 注解
- java 注解(annotation)
- Jetty
- 关于NLS_DATE_FORMAT的默认格式DD-MON-RR
- tomcat同时使用http和https访问的配置方法
- mysql marked as crashed错误解决方法
- R学习
- Java Annotation注解继承方式说明
- eclipse代码提示慢的解决方法
- android中跨进程通讯
- 数论小节
- Hbase结构
- 计算十进制整数的子段组成的整数
- mysql 常用操作
- fedora安装codeblocks(包括输入法配置)
- 新博客