構成
このセクションでは、Spring Data LDAP の構成について説明します。Spring LDAP リポジトリは、XML 構成で <data-ldap:repositories>
タグを使用するか、構成クラスで @EnableLdapRepositories
アノテーションを使用することによって有効にできます。
“Spring ネームスペース” (XML 構成)
“アノテーションベースの構成” (Java 構成)
自動生成されたリポジトリに LdapQuery
パラメーターのサポートを含めるには、インターフェースで CrudRepository
ではなく LdapRepository
を継承します。
すべての Spring LDAP リポジトリは、オブジェクトディレクトリマッピングに従って、ODM アノテーションが付けられたエンティティを操作する必要があります。
すべての ODM 管理クラスには ID として識別名が必要なため、すべての Spring LDAP リポジトリの ID 型 パラメーターが javax.naming.Name
に設定されている必要があります。
実際、組み込みの LdapRepository
(Javadoc) は、管理対象エンティティクラスという 1 つの型パラメーターのみを受け取ります。このクラスの ID はデフォルトで javax.naming.Name
になります。
LDAP プロトコルの仕様により、ページングとソートは Spring LDAP リポジトリではサポートされていません。
org.springframework.ldap.odm.annotations.Id などの ODM アノテーションを使用する必要があります。Spring LDAP は独自のマッピング層を使用するため、Spring Data のアノテーションの使用は機能しません。 |
アノテーションベースの構成
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 が作成されます。
デフォルトでは、リポジトリは ldapTemplate
と呼ばれるオートワイヤーされた LdapTemplate
Spring Bean を取得するため、この規則から逸脱する場合にのみ ldap-template-ref
を明示的に構成する必要があります。
JavaConfig と XML のどちらが優れていますか ? XML は、Spring がずっと前に構成された方法です。Java、レコード型、アノテーションなどが急速に成長している今日の時代では、通常、新しいプロジェクトではできる限り多くの純粋な Java が使用されます。XML サポートを削除する当面の計画はありませんが、最新の機能の一部は XML で利用できない場合があります。 |
repositories
要素を使用すると、リポジトリインスタンスの作成に従って Spring Data リポジトリが検索されます。
カスタム名前空間属性
repositories
要素のデフォルト属性に加えて、LDAP 名前空間は、リポジトリのセットアップをより詳細に制御できる追加の属性を提供します。
|
|
Spring Data LDAP では、ldapMappingContext という名前の LdapMappingContext Bean が存在する必要があります。そのような Bean が定義されていない場合、Spring Data LDAP はアプリケーションコンテキストにデフォルトのインスタンスを登録します。 |