zoukankan      html  css  js  c++  java
  • @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

  • 相关阅读:
    远程推送(个推)
    transform3D实现翻页效果
    启发式搜索 A*算法的OC 实现
    IOS 高级开发 KVC(二)
    IOS 高级开发 KVC(一)
    IOS 应用程序启动加载过程(从点击图标到界面显示)
    堆排序的OC实现
    iOS 高级开发 runtime(三)
    IOS 高级开发 runtime(二)
    RxSwift
  • 原文地址:https://www.cnblogs.com/guanzhuang/p/7679565.html
Copyright © 2011-2022 走看看