|
对于最新稳定版本,请使用 Spring LDAP 4.0.0! |
LDIF解析
LDAP目录交换格式(LDIF)文件是描述平面文件格式目录数据的标准媒介。该格式最常见的用途包括信息传输和归档。然而,该标准也定义了一种描述扁平文件格式对存储数据修改的方法。这种后期类型的LDIF通常被称为变型或修改LDIF。
这org.springframework.ldap.ldifpackage 提供了解析 LDIF 文件并将其反序列化为有形对象所需的类。这Ldif解析器是 的主类org.springframework.ldap.ldif能够解析符合RFC 2849的文件。该类读取资源中的行并将它们组装成Ldap属性对象。
这Ldif解析器目前忽略了 changetype LDIF 的条目,因为它们在应用上下文中的实用性尚未确定。 |
对象表示
两级org.springframework.ldap.corepackage 提供了用代码表示 LDIF 的方法:
-
Ldap属性:延伸javax.naming.directory.BasicAttribute增加了对 RFC2849 中定义的 LDIF 选项的支持。 -
Ldap属性:延伸javax.naming.directory.BasicAttributes增加了对DN的专业支持。
Ldap属性对象表示选项为Set<String>. DN支持增加了Ldap属性对象使用javax.naming.ldap.LdapName类。
解析器
这解析 器接口为运行提供了基础,并采用了三种支持策略定义:
-
分离者政策:确定了将线组装成属性的机制。 -
属性验证政策确保属性在解析前结构正确。 -
规范:提供一种机制,使对象结构在汇编后可以被验证。
这些接口的默认实现如下:
-
org.springframework.ldap.ldif.parser.LdifParser -
org.springframework.ldap.ldif.support.SeparatorPolicy -
org.springframework.ldap.ldif.support.DefaultAttributeValidationPolicy -
org.springframework.ldap.schema.DefaultSchemaSpecification
这四个类共同逐行解析资源,并将数据转换为Ldap属性对象。
这分离者政策决定从源文件读取的每行应如何解释,因为LDIF规范允许属性跨越多行。默认策略根据行的读取顺序评估行,以确定所考虑行的性质。控制属性和变更类型记录被忽略。
这DefaultAttributeValidationPolicy使用正则表达式确保每个属性在解析后符合有效的属性格式(根据RFC 2849)。如果属性验证失败,则InvalidAttributeFormatException被记录,且跳过记录(解析器返回)零).
模式验证
通过以下方式,可以通过规范接口org.springframework.ldap.schema包。 这默认模式规范不进行任何验证,适用于已知有效且无需检查的记录。此选项避免了验证带来的性能损失。 这BasicSchemaSpecification应用基本检查,如确保已提供DN和对象类声明。目前,验证实际模式需要实现规范接口。
春季批积分
虽然Ldif解析器任何需要解析LDIF文件的应用程序都可以使用,Spring提供一个批处理框架,提供多种用于解析分隔文件(如CSV)的文件处理工具。 这org.springframework.ldap.ldif.batch软件包提供使用所需的类Ldif解析器作为 Spring Batch 框架中的一个有效配置选项。该软件包包含五个类。它们共同提供三种基本用例:
-
从文件读取 LDIF 记录并返回
Ldap属性对象。 -
从文件读取 LDIF 记录并将记录映射到 Java 对象(POJO)。
-
将LDIF记录写入文件。
第一个用例是通过实现的Ldif读者. 本课程延续了Spring Session的摘要、物品计数、物品流、物品阅读器并实现其资源意识物品阅读器流. 它自然地融入了框架,你可以用它来阅读Ldap属性文件中的对象。
你可以使用地图Ldif阅读器直接映射到任意 POJO 的 LDIF 对象。该类要求你提供记录地图仪接口。 该实现应实现将对象映射到 POJO 的逻辑。
你可以实现记录回调处理程序并将实现提供给任一读者。您可以使用该处理程序对跳过的记录进行作。更多信息请参见 Spring Batch API 文档。
这个包裹的最后一个成员,是Ldif聚合器可以使用 来将 LDIF 记录写入文件。该类调用toString()方法Ldap属性对象。