@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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM