自动装配的底层实现

阅读更多

    public void autowire(Object o, Map map) throws Exception {
        // 获得map 所有key
        Set keys = map.keySet();

        // 获得Object中所有属性
        // 获得Class对象
        Class c = o.getClass();
        // 获得所有属性
        Field[] fields = c.getDeclaredFields();
        for (Field field : fields) {
            // 获得属性名称
            String fieldName = field.getName();
            // 判断属性名称是否存在于map的key
            if (map.containsKey(fieldName)) {
                // 完成属性封装
                String value = map.get(fieldName);

                // 修改私有属性可见性
                field.setAccessible(true);

                field.set(o, value);

你可能感兴趣的:(自动装配的底层实现)