Java反射与自定义注解

反射技术

基本概念:
使用反射机制可以动态获取当前class的信息,比如方法的信息,注解信息,方法的参数,属性等;

反射技术应用的场景

  1. JDBC加载驱动链接 class.forname
  2. Spring容器框架IOC实例化对象
  3. 自定义注解生效(反射+AOP)
  4. 第三方核心的框架
UserEntity userEntity = (UserEntity) aClass.newInstance();
Field userId = aClass.getDeclasreField("userId");
userId.setAccessible(true);(关闭java语言的访问检查,就是反射时不会去检查调用是否符合语言规范;同时获取权限,设置为true后,就可以在外部通过反射和调用private属性和方法)
userId.set(userEntity,12)
// 其他方法
aClass.getDeclaredAnnotation(Transactional.class)// 获取当前类是否有Transactional注解  Annotation:注解  Declared:声名(当前类),不加Declared会获取到父类都会获取,加上Declared的只会获取到当前类的方法

自定义注解

元注解:(需要注解能够生效时使用)

@Retention:标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时可以通过反射访问
@Documented:标记这些注解是否包含在用户文档中
@Target:标记这个注解应该是哪种java成员
@Inherited:标记这个注解是继承于哪个注解类(默认 注解并没有继承于任何子类)

@Taget(ElementType.METHOD) // 当前注解只能用在方法上
// @Taget(ElementType.METHOD,MElementType.RIELD)
@Retention(RetentionPolicy.RUNTIME) // 运行时可获取
public @interface ExtTransactional{
	String name();
	Integer age();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华华华华华12138

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值