@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内部实现原理的主要内容,如果未能解决你的问题,请参考以下文章

谈谈 @Autowired 的实现原理

Spring 源码@Autowired注解实现原理(Spring Bean的自动装配)

Spring 源码@Autowired注解实现原理(Spring Bean的自动装配

Spring 源码(九)@Autowired注解实现原理(Spring Bean的自动装配)

@Autowired用法与原理解析

Spring源码剖析-Autowired自动注入原理