配置
本节介绍如何配置 Spring Data LDAP。
Spring LDAP 存储库可以通过在 XML 配置中使用标记或在配置类上使用注释来启用:<data-ldap:repositories>
@EnableLdapRepositories
-
“Spring Namespace” (XML 配置)
-
“基于注释的配置”(Java 配置)
要在自动生成的存储库中包含对参数的支持,请让您的接口 extend 而不是 .LdapQuery
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 注释,例如 .
使用 Spring Data 的 Comments 不起作用,因为 Spring LDAP 使用自己的 Map 层。org.springframework.ldap.odm.annotations.Id |
基于注释的配置
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 特有的某些功能和元素属性。
通常,可以使用 元素设置 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。
默认情况下,存储库会获得一个名为 的自动装配的 Spring bean,因此只有在偏离此约定时才需要显式配置。LdapTemplate
ldapTemplate
ldap-template-ref
JavaConfig 和 XML 哪个更好? XML 是很久以前 Spring 的配置方式。 在当今 Java、记录类型、注释等快速增长的时代,新项目通常会尽可能多地使用纯 Java。 虽然目前没有删除 XML 支持的计划,但某些最新功能可能无法通过 XML 获得。 |
使用该元素可查找 Spring Data 存储库,如创建存储库实例中所述。repositories
自定义命名空间属性
除了 repositories
元素的默认属性之外,LDAP 命名空间还提供了其他属性,以便您更详细地控制存储库的设置:
|
显式连接 要与元素检测到的存储库一起使用。通常在应用程序中使用多个 bean 时使用。如果未配置,则 Spring Data 会自动查找名称位于 . |
Spring Data LDAP 需要存在一个名为 Bean。
如果未定义此类 bean,则 Spring Data LDAP 将在应用程序上下文中注册默认实例。LdapMappingContext ldapMappingContext |