@Autowired内部实现原理
Posted 无限的知识,无限的海洋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@Autowired内部实现原理相关的知识,希望对你有一定的参考价值。
@Autowired
private CustomerDao customerDao;
public void addCustomer() {
customerDao.addCustomer();
}
public static void main(String[] args) {
Class clazz = CustomerServiceImpl.class;
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
boolean present = field.isAnnotationPresent(Autowired.class);
if(present){
System.out.println(field.getGenericType());
System.out.println(field.getName());
}
}
}
这应该就是spring里面的一段源码
他是先获取当前类的.class文件
然后再通过反射的方式获取字段
然后遍历字段
然后暴力反射获取注解的.class文件
然后判断这个文件是否存在不
如果存在,打印他的接口类型
上面这段代码出来的效果如下:
interface cn.ql.dao.CustomerDao
customerDao
然后我又定义了个属性方便理解
@Autowired
private String user;
他出来的结果是
class java.lang.String
user
以上是关于@Autowired内部实现原理的主要内容,如果未能解决你的问题,请参考以下文章
Spring 源码@Autowired注解实现原理(Spring Bean的自动装配)
Spring 源码@Autowired注解实现原理(Spring Bean的自动装配