首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spring-ldap和@attributes标注与spring-ldap 2.x ODM接口

spring-ldap和@attributes标注与spring-ldap 2.x ODM接口
EN

Stack Overflow用户
提问于 2014-07-30 19:27:12
回答 1查看 651关注 0票数 1

Spring-LDAP ODM注释中似乎缺少一些东西。这是一个功能请求的问题,如果有更好的方式来贡献这样的请求,请说出来。

我想将@属性标记为只读,这样它将填充ldap中的bean以供引用,但不会将其持久化回LDAP。我建议在@Attribute中添加一个只读属性,对于通常的情况,默认为false。缺省属性*遗漏了所有操作属性,其中一些属性非常有用,并且传输的数据比所需的更多,从而减慢了具有永远不会使用的属性的ldap查询速度。

例如,它对于字面意义上的只读非常有用,例如entryUUID、etag等,如果您希望仅将某些字段持久存储回ldap,则不能使用这些方法,因为当您保存bean时,bean无法持久存储到ldap,并出现异常。但也适用于一般字段,您希望从结构上防止用户进行任何更新。

您可以通过不注释只读字段,然后使用单独的调用手动填充只读字段来解决此问题。非常混乱,并扼杀了查询速度。

同样在一个相关的主题上,query()可以有一个默认的属性列表,你已经在你的类中注释了它,类似于:

代码语言:javascript
复制
public static String[] getBeanAttributes(Class<?> beanClass) {
    ArrayList<String> attrsObj = new ArrayList<>();
    for (Field field : beanClass.getDeclaredFields()) {
        if (field.isAnnotationPresent(Attribute.class)) {
            Attribute attr = field.getAnnotation(Attribute.class);
            attrsObj.add(attr.name());
        }
    }
    String[] attrs = attrsObj.toArray(new String[attrsObj.size()]);
    return attrs;
}

现在我意识到,作为静态成员,String[] ()是在bean类已知之前构建的,但至少可以有一个类似上面的辅助函数,或者query attributes()的方法签名,该方法签名将bean类签名作为参数。

EN

回答 1

Stack Overflow用户

发布于 2014-08-06 14:46:45

我在Jira上创建了LDAP-312。谢谢。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25035647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档