public GetExecutor getGetExecutor(Class locatorClass, Object identifier) {
        final Class<?> clazz = locatorClass;
        final String property = (identifier == null ? null : identifier.toString());

        // 尝试一下bean处理
        if (property != null) {
            PropertyGetExecutor pExecutor = new PropertyGetExecutor(getIntrospector(), clazz, property);
            if (pExecutor.isAlive()) {
                return pExecutor;
            }
        }

        // 尝试一下特殊符号，比如"null"
        NullSymbolGetExecutor nExecutor = new NullSymbolGetExecutor(getIntrospector(), clazz, property);
        if (nExecutor.isAlive()) {
            return nExecutor;
        }

        // 尝试一下特殊符号，比如"this"
        ThisSymbolGetExecutor sExecutor = new ThisSymbolGetExecutor(getIntrospector(), clazz, property);
        if (sExecutor.isAlive()) {
            return sExecutor;
        }

        // 尝试一下map处理
        MapGetExecutor mExecutor = new MapGetExecutor(getIntrospector(), clazz, property);
        if (mExecutor.isAlive()) {
            return mExecutor;
        }

        // 尝试一下直接field操作
        FieldGetExecutor fExecutor = new FieldGetExecutor(getIntrospector(), clazz, property);
        if (fExecutor.isAlive()) {
            return fExecutor;
        }

        throw new BeanMappingException("can not found GetExecutor for Class[" + clazz.getName() + "] , identifier["
                                       + identifier + "]");
    }