对于最新的稳定版本,请使用 Spring LDAP 3.2.6spring-doc.cn

对于最新的稳定版本,请使用 Spring LDAP 3.2.6spring-doc.cn

LDAP 目录交换格式 (LDIF) 文件是以平面文件格式描述目录数据的标准介质。此格式的最常见用途包括信息传输和存档。但是,该标准还定义了一种以平面文件格式描述对存储数据的修改的方法。这种后续类型的 LDIF 通常称为 changetypemodify LDIF。spring-doc.cn

该包提供了解析 LDIF 文件并将其反序列化为有形对象所需的类。它是包的主类,能够解析符合 RFC 2849 的文件。此类从资源中读取行并将其组合到对象中。org.springframework.ldap.ldifLdifParserorg.springframework.ldap.ldifLdapAttributesspring-doc.cn

当前忽略 changetype LDIF 条目,因为它们在应用程序上下文中的有用性尚未确定。LdifParser
当前忽略 changetype LDIF 条目,因为它们在应用程序上下文中的有用性尚未确定。LdifParser

对象表示

包中的两个类提供了在代码中表示 LDIF 的方法:org.springframework.ldap.corespring-doc.cn

  • LdapAttribute:扩展了对 RFC2849 中定义的 LDIF 选项的添加支持。javax.naming.directory.BasicAttributespring-doc.cn

  • LdapAttributes:扩展了对 DN 的专用支持。javax.naming.directory.BasicAttributesspring-doc.cn

LdapAttribute对象将选项表示为 .添加到对象的 DN 支持使用类。Set<String>LdapAttributesjavax.naming.ldap.LdapNamespring-doc.cn

解析器

该接口为操作提供了基础,并采用了三个支持策略定义:Parserspring-doc.cn

  • SeparatorPolicy:建立将线条组合成属性的机制。spring-doc.cn

  • AttributeValidationPolicy:确保在解析之前正确构建属性。spring-doc.cn

  • Specification:提供一种机制,通过该机制可以在组装后验证对象结构。spring-doc.cn

这些接口的默认实现如下:spring-doc.cn

  • org.springframework.ldap.ldif.parser.LdifParserspring-doc.cn

  • org.springframework.ldap.ldif.support.SeparatorPolicyspring-doc.cn

  • org.springframework.ldap.ldif.support.DefaultAttributeValidationPolicyspring-doc.cn

  • org.springframework.ldap.schema.DefaultSchemaSpecificationspring-doc.cn

这四个类一起逐行解析资源并将数据转换为对象。LdapAttributesspring-doc.cn

这决定了应该如何解释从源文件中读取的各行,因为 LDIF 规范允许属性跨越多行。默认策略根据读取行的顺序评估行,以确定要考虑的行的性质。控件属性和 changeType 记录将被忽略。SeparatorPolicyspring-doc.cn

使用 REGEX 表达式来确保每个属性在解析后都符合有效的属性格式(根据 RFC 2849)。如果属性未通过验证,则记录 an,并跳过记录(解析器 returns )。DefaultAttributeValidationPolicyInvalidAttributeFormatExceptionnullspring-doc.cn

架构验证

通过软件包中的接口,可以使用一种针对架构验证已解析对象的机制。该 不执行任何验证,可用于已知记录有效且无需检查的实例。此选项可节省验证施加的性能损失。应用基本检查,例如确保已提供 DN 和对象类声明。目前,针对实际架构的验证需要实现接口。Specificationorg.springframework.ldap.schemaDefaultSchemaSpecificationBasicSchemaSpecificationSpecificationspring-doc.cn

Spring Batch 集成

虽然任何需要解析 LDIF 文件的应用程序都可以使用 , Spring 提供了一个批处理框架,该框架提供了许多文件处理实用程序来解析分隔文件,例如 CSV。该包提供了在 Spring Batch 框架中使用 as a valid configuration 选项所需的类。 此包中有五个类。它们共同提供了三个基本用例:LdifParserorg.springframework.ldap.ldif.batchLdifParserspring-doc.cn

  • 从文件中读取 LDIF 记录并返回对象。LdapAttributesspring-doc.cn

  • 从文件中读取 LDIF 记录并将记录映射到 Java 对象 (POJO)。spring-doc.cn

  • 将 LDIF 记录写入文件。spring-doc.cn

第一个用例是通过 完成的。这个类扩展了 Spring Batch 的并实现了它的 .它自然而然地适合框架,您可以使用它从文件中读取对象。LdifReaderAbstractItemCountingItemStreamItemReaderResourceAwareItemReaderItemStreamLdapAttributesspring-doc.cn

您可以使用 将 LDIF 对象直接映射到任何 POJO。此类要求您提供接口的实现。此实现应实现将对象映射到 POJO 的逻辑。MappingLdifReaderRecordMapperspring-doc.cn

您可以实现并向任一读者提供实现。您可以使用此处理程序对跳过的记录进行操作。有关更多信息,请参阅 Spring Batch API 文档RecordCallbackHandlerspring-doc.cn

此包的最后一个成员 ,可用于将 LDIF 记录写入文件。此类调用对象的方法。LdifAggregatortoString()LdapAttributesspring-doc.cn