0
我想創建一個spring rest應用程序來返回可能來自兩個不同的ldap目錄服務器的值。這可能使用spring ldap庫嗎?是否有可能創建多個ldaptemplate和contextsource,以便我可以查詢這兩個目錄?春季ldap資源庫項目可以訪問兩個不同的ldap目錄嗎?
我想創建一個spring rest應用程序來返回可能來自兩個不同的ldap目錄服務器的值。這可能使用spring ldap庫嗎?是否有可能創建多個ldaptemplate和contextsource,以便我可以查詢這兩個目錄?春季ldap資源庫項目可以訪問兩個不同的ldap目錄嗎?
您可以爲每個LDAP目錄配置單獨的ldapTemplate
和contextSource
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)。
我曾嘗試過,但無法弄清楚如何將每個ldapTemplate連接到ldap存儲庫。我在我的LdapConfiguration類上使用@EnableRepositories註釋。我需要爲不同的ldap目錄設置不同的ldap存儲庫類。 –
您可以設置'@ EnableLdapRepositories'的'ldapTemplateRef'屬性,以便配置要使用的'ldaptemplate' bean的名稱。在你的情況下,你應該爲你的LDAP目錄配置單獨的配置類,它們有單獨的@EnableLdapRepositories註解。 –