2016-06-09 26 views

回答

0

您可以爲每個LDAP目錄配置單獨的ldapTemplatecontextSource bean。

您可以參考以下基本配置(JavaConfig);

@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());   
    } 

} 

然後,你可以參考每個實例在應用程序中按如下;

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

旁註;如果LDAP目錄的數量增加,那麼實施ldaptemplate工廠會更好,該工廠會接收連接詳細信息並返回ldaptemplate實例(example)。

+0

我曾嘗試過,但無法弄清楚如何將每個ldapTemplate連接到ldap存儲庫。我在我的LdapConfiguration類上使用@EnableRepositories註釋。我需要爲不同的ldap目錄設置不同的ldap存儲庫類。 –

+0

您可以設置'@ EnableLdapRepositories'的'ldapTemplateRef'屬性,以便配置要使用的'ldaptemplate' bean的名稱。在你的情況下,你應該爲你的LDAP目錄配置單獨的配置類,它們有單獨的@EnableLdapRepositories註解。 –