Ldap查询 - 使用Spring Boot进行配置

时间:2014-09-23 20:21:12

标签: spring-boot spring-ldap

我有一个需要执行LDAP查询的Spring启动应用程序。我正在尝试从Spring启动文档中获取以下建议:

  

“许多Spring配置示例已发布在   使用XML配置的Internet。总是尝试使用等效的   如果可能的话,基于Java的配置。“

在Spring XML配置文件中,我会使用:

 <ldap:context-source
          url="ldap://localhost:389"
          base="cn=Users,dc=test,dc=local"
          username="cn=testUser"
          password="testPass" />

   <ldap:ldap-template id="ldapTemplate" />

   <bean id="personRepo" class="com.llpf.ldap.PersonRepoImpl">
      <property name="ldapTemplate" ref="ldapTemplate" />
   </bean>

如何使用基于Java的配置进行配置?我需要能够在没有代码重建的情况下更改ldap:context-source的URL,base,username和password属性。

2 个答案:

答案 0 :(得分:19)

<ldap:context-source> XML标记生成LdapContextSource bean,<ldap:ldap-template> XML标记生成LdapTemplate bean,这样您需要在Java中执行的操作配置:

@Configuration
@EnableAutoConfiguration
@EnableConfigurationProperties
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    @ConfigurationProperties(prefix="ldap.contextSource")
    public LdapContextSource contextSource() {
        LdapContextSource contextSource = new LdapContextSource();
        return contextSource;
    }

    @Bean
    public LdapTemplate ldapTemplate(ContextSource contextSource) {
        return new LdapTemplate(contextSource);
    }

    @Bean 
    public PersonRepoImpl personRepo(LdapTemplate ldapTemplate) {
        PersonRepoImpl personRepo = new PersonRepoImpl();
        personRepo.setLdapTemplate(ldapTemplate);
        return personRepo;
    }
}

为了让您在不重建代码的情况下更改配置,我使用了Spring Boot的@ConfigurationProperties。这将在您的应用程序环境中查找前缀为ldap.contextSource的属性,然后通过调用匹配的setter方法将它们应用于LdapContextSource bean。要在问题中应用配置,您可以使用包含四个属性的application.properties文件:

ldap.contextSource.url=ldap://localhost:389
ldap.contextSource.base=cn=Users,dc=test,dc=local
ldap.contextSource.userDn=cn=testUser
ldap.contextSource.password=testPass

答案 1 :(得分:-2)

在XML中,您可以使用:

<bean  id="ldapContextSource" 
        class="org.springframework.ldap.core.support.LdapContextSource">
    <property name="url" value="<URL>" />
    <property name="base" value="<BASE>" />
    <property name="userDn" value="CN=Bla,OU=com" />
    <property name="password" value="<PASS>" />
    <property name="referral" value="follow" />
</bean>

<bean   id="ldapTemplate" 
        class="org.springframework.ldap.core.LdapTemplate" 
        depends-on="ldapContextSource">
        <constructor-arg index="0" ref="ldapContextSource" />
        <property name="ignorePartialResultException" value="true"/>
</bean>

<bean id="personRepo" class="com.llpf.ldap.PersonRepoImpl">
        <property name="ldapTemplate" ref="ldapTemplate" />
</bean>

我希望它有所帮助!