使用

要访问存储在符合 LDAP 标准的目录中的域实体,您可以使用我们先进的仓库支持,这大大简化了实现过程。为此,请为您的仓库创建一个接口,如下例所示。

示例 1. 示例 Person 实体
@Entry(objectClasses = { "person", "top" }, base="ou=someOu")
public class Person {

   @Id
   private Name dn;

   @Attribute(name="cn")
   @DnAttribute(value="cn", index=1)
   private String fullName;

   @Attribute(name="firstName")
   private String firstName;

   // No @Attribute annotation means this is bound to the LDAP attribute
   // with the same value
   private String firstName;

   @DnAttribute(value="ou", index=0)
   @Transient
   private String company;

   @Transient
   private String someUnmappedField;
   // ...more attributes below
}

这里我们有一个简单的域对象。请注意,它有一个名为dn的属性,类型为Name。使用该域对象,我们可以通过为其定义一个接口来创建一个仓库来持久化该类型的对象,如下所示。

示例 2. 持久化Person实体的基本仓库接口
public interface PersonRepository extends CrudRepository<Person, Long> {

  // additional custom finder methods go here
}

因为我们的域仓库扩展了CrudRepository,所以它也提供了CRUD操作以及访问实体的方法。使用仓库实例只需将其依赖注入到客户端中。

示例 3. 访问 Person 实体
@ExtendWith(SpringExtension.class)
@ContextConfiguration
class PersonRepositoryTests {

    @Autowired PersonRepository repository;

    @Test
    void readAll() {

      List<Person> persons = repository.findAll();
      assertThat(persons.isEmpty(), is(false));
    }
}

该示例使用 Spring 的单元测试支持创建一个应用程序上下文,该上下文将执行基于注解的依赖注入到测试用例中。在测试方法内部,我们使用仓库来查询数据存储。