Java教程

Java注解如何对属性动态赋值

本文主要是介绍Java注解如何对属性动态赋值,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

学而不思则罔,思而不学则殆



前言

大家都用过Spring的@Value("xxx")注解,如果没有debug过源码的同学对这个操作还是一知半解,工作一年了学了反射学了注解,还是不会自己手撸一个注解对属性赋值的操作。今天就用几分钟时间给你讲明白这个如何实现!

理想中代码:

@Compant
public class Bean01 {
  @MyValue("张三") //自定义注解
  String name; 
}

如果学过反射,获取类属性上面的自定义注解对象简直太简单,那怎么拿到“张三”,并给Bean01这个对象的name赋值呢?
在这里我用spring的形式给大家展示一下,完成这个理想赋值的demo~


思路:

1.spring启动,通过ComponentScan扫描注解(标签)加载@Component装饰的所有bean对象
2.通过Spring的BeanFactory增强,拿到Spring中注册的类信息
(BeanFactory会把扫描到的类信息放到BeanDefinitionMap中
BeanFactory会把扫描到的类名称放到BeanDefinitionNames中)
3.获取BeanDefinition中class信息,通过反射技术,获取类的属性,进而判断有没有自定义的注解装饰。
4.使用InvocationHandler,拿到自动义注解的属性值

这篇关于Java注解如何对属性动态赋值的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!