此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Data LDAP 3.4.0! |
配置
本节介绍如何配置 Spring Data LDAP。
Spring LDAP 存储库可以通过使用<data-ldap:repositories>
标记中,或者使用@EnableLdapRepositories
注解:
-
“Spring Namespace” (XML 配置)
-
“基于注释的配置”(Java 配置)
要包括对LdapQuery
parameters 的 Interfaces 中,让您的接口扩展LdapRepository
而不是CrudRepository
.
所有 Spring LDAP 存储库都必须使用用 ODM 注释注释的实体,如对象目录映射中所述。
由于所有 ODM 托管类都必须将 Distinguished Name 作为 ID,因此所有 Spring LDAP 存储库都必须将 ID type 参数设置为javax.naming.Name
.
事实上,内置的LdapRepository
仅接受一个类型参数:托管实体类,该类将 ID 默认为javax.naming.Name
.
由于 LDAP 协议的特殊性,Spring LDAP 存储库不支持分页和排序。
您必须使用 ODM 注解,例如org.springframework.ldap.odm.annotations.Id .
使用 Spring Data 的 Comments 不起作用,因为 Spring LDAP 使用自己的 Map 层。 |
基于注释的配置
Spring Data LDAP 存储库支持可以通过 JavaConfig 以及自定义 XML 命名空间来激活,如以下示例所示:
@Configuration
@EnableLdapRepositories("com.acme.*.repositories")
class MyConfig {
@Bean
ContextSource contextSource() {
LdapContextSource ldapContextSource = new LdapContextSource();
ldapContextSource.setUserDn("cn=Admin");
ldapContextSource.setPassword("secret");
ldapContextSource.setUrl("ldap://127.0.0.1:389");
return ldapContextSource;
}
@Bean
LdapTemplate ldapTemplate(ContextSource contextSource) {
return new LdapTemplate(contextSource);
}
}
此配置会导致扫描基本包以查找扩展包含 LDAP 存储库的接口,并为找到的每个接口创建 Spring bean。
如果未配置基础包,则基础架构将扫描带注释的配置类的包。
Spring 命名空间
Spring Data 的 LDAP 模块包含一个允许定义存储库 bean 的自定义命名空间。
它还包含 LDAP 特有的某些功能和元素属性。
通常,可以使用repositories
元素,如以下示例所示:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ldap="http://www.springframework.org/schema/ldap"
xmlns:data-ldap="http://www.springframework.org/schema/data/ldap"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/ldap
https://www.springframework.org/schema/ldap/spring-ldap.xsd
http://www.springframework.org/schema/data/ldap
https://www.springframework.org/schema/data/ldap/spring-ldap.xsd">
<ldap:context-source url="ldap://127.0.0.1:389"
username="cn=Admin"
password="secret" />
<ldap:ldap-template />
<data-ldap:repositories base-package="com.acme.*.repositories" />
</beans>
此配置会导致扫描基本包以查找扩展包含 LDAP 存储库的接口,并为找到的每个接口创建 Spring bean。
默认情况下,存储库会自动装配LdapTemplate
名为ldapTemplate
,因此您只需配置ldap-template-ref
明确地表示,如果您偏离了此约定。
JavaConfig 和 XML 哪个更好? XML 是很久以前 Spring 的配置方式。 在当今 Java、记录类型、注释等快速增长的时代,新项目通常会尽可能多地使用纯 Java。 虽然目前没有删除 XML 支持的计划,但某些最新功能可能无法通过 XML 获得。 |
使用repositories
元素查找 Spring Data 存储库,如创建存储库实例中所述。
自定义命名空间属性
在default 属性的repositories
元素中,LDAP 命名空间提供了其他属性,以便您更详细地控制存储库的设置:
|
显式连接 |
Spring Data LDAP 需要一个LdapMappingContext 名为ldapMappingContext 在场。
如果未定义此类 bean,则 Spring Data LDAP 将在应用程序上下文中注册默认实例。 |