2016-06-09 16 views

Antwort

0

Sie können getrennte Beams ldapTemplate und contextSource für jedes LDAP-Verzeichnis konfigurieren.

Sie können auf die folgende Grundkonfiguration (JavaConfig) zugreifen;

@Configuration 
@EnableLdapRepositories(basePackages = "com.foo.ldap1.repositories", ldapTemplateRef="ldapTemplate1") 
public class Ldap1Configuration { 

    @Autowired 
    Environment env; 

    @Bean 
    public LdapContextSource contextSource1() { 
     LdapContextSource contextSource= new LdapContextSource(); 
     contextSource.setUrl(env.getRequiredProperty("ldap1.url")); 
     contextSource.setBase(env.getRequiredProperty("ldap1.base")); 
     contextSource.setUserDn(env.getRequiredProperty("ldap1.user")); 
     contextSource.setPassword(env.getRequiredProperty("ldap1.password")); 
     return contextSource; 
    } 

    @Bean(name="ldapTemplate1") 
    public LdapTemplate ldapTemplate1() { 
     return new LdapTemplate(contextSource1());   
    } 
} 
@Configuration 
@EnableLdapRepositories(basePackages = "com.foo.ldap2.repositories", ldapTemplateRef="ldapTemplate2") 
public class Ldap2Configuration { 
    @Bean 
    public LdapContextSource contextSource2() { 
     LdapContextSource contextSource= new LdapContextSource(); 
     contextSource.setUrl(env.getRequiredProperty("ldap2.url")); 
     contextSource.setBase(env.getRequiredProperty("ldap2.base")); 
     contextSource.setUserDn(env.getRequiredProperty("ldap2.user")); 
     contextSource.setPassword(env.getRequiredProperty("ldap2.password")); 
     return contextSource; 
    } 

    @Bean(name="ldapTemplate2") 
    public LdapTemplate ldapTemplate2() { 
     return new LdapTemplate(contextSource2());   
    } 

} 

Dann können Sie für jede Instanz in der Anwendung beziehen sich pro folgenden;

@Autowired 
@Qualifier("ldapTemplate1") 
private LdapTemplate ldapTemplate1; 
@Autowired 
@Qualifier("ldapTemplate2") 
private LdapTemplate ldapTemplate2; 

Exkurs; Wenn die Anzahl der LDAP-Verzeichnisse zunimmt, ist es besser, eine ldaptemplate Factory zu implementieren, die Verbindungsdetails übernimmt und ldaptemplate Instanzen zurückgibt (example).

+0

Ich hatte dies versucht, konnte aber nicht herausfinden, wie ich jedes ldapTemplate mit einem ldap-Repository verbinden würde. Ich verwende die Annotation @EnableRepositories für meine LdapConfiguration-Klasse. Ich brauche verschiedene ldap-Repository-Klassen für meine verschiedenen ldap-Verzeichnisse. –

+0

Sie können die Eigenschaft 'ldapTemplateRef' von' @ EnableLdapRepositories' festlegen, um den Namen der zu verwendenden 'ldaptemplate' Bean zu konfigurieren. In Ihrem Fall sollten Sie separate Konfigurationsklassen mit separaten @ EnableLdapRepositories-Annotationen für Ihre LDAP-Verzeichnisse konfigurieren. –