2014-09-23 7 views
4

У меня есть приложение загрузки Spring, которое должно выполнять LDAP-запросы. Я пытаюсь принять следующую рекомендацию из документации Spring загрузки:.Ldap Query - Конфигурация с использованием Spring Boot

«Многие примеры конфигурации Spring были опубликован на Интернете, которые используют конфигурацию XML Всегда пытаются использовать такую ​​конфигурацию 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 на основе? Мне нужно иметь возможность изменять атрибуты URL, базы, имени пользователя и пароля ldap: context-source без восстановления кода.

ответ

18

<ldap:context-source> XML тег производит LdapContextSource боб и <ldap:ldap-template> XML тег производит LdapTemplate боб так это то, что вам нужно сделать в конфигурации 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, а затем применить их к компоненту LdapContextSource, вызвав методы сопоставления меток. Чтобы применить конфигурацию в вопросе, вы можете использовать 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 
+0

Odd - я не могу заставить это работать, если я создаю файл конфигурации yaml - он отлично работает, когда я создаю конфигурацию свойств. – joensson

+1

Он также работал с файлом конфигурации yaml. 'Ldap.contextSource: URL: LDAP: // локальный: 389 база: сп = Users, DC = тест, DC = локальный userDn: сп = TestUser пароль: testPass' – niro

-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> 

Я надеюсь, что это помогает!

+0

Это не помогает. Это совсем НЕ то, что он хотел. –

 Смежные вопросы

  • Нет связанных вопросов^_^