Подключить ObjectDirectoryMapper к LdapTemplate в Config?

Это продолжение вопроса: spring ldap 2.0.1 заменяет OdmManager устарел

Вот фрагмент теста JUnit:

@Autowired
private LdapTemplate ldapTemplate;

@Autowired
private ObjectDirectoryMapper objectDirectoryMapper;

@Before
public void setUp() {
  ldapTemplate.setObjectDirectoryMapper(objectDirectoryMapper);
}

Я хотел бы избежать программной установки objectDirectoryMapper, как показано в setUp(), но я не уверен, глядя на схему тега ‹ldap:ldap-template .../›, есть ли способ внедрить свойство objectDirectoryMapper в XML, а не программно. Я могу упустить что-то очевидное...

Вот соответствующий XML. Как вы можете видеть, я пытаюсь подключить преобразователь, который является целью (обновление: на самом деле основной целью является внедрение моего пользовательского преобразователя, который будет использоваться LdapRepository<User>:

    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:ldap="http://www.springframework.org/schema/ldap"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/ldap http://www.springframework.org/schema/ldap/spring-ldap.xsd">

        <context:property-placeholder location="classpath:/test/ldap.properties"
        system-properties-mode="OVERRIDE" />
        <context:annotation-config />

        <ldap:context-source id="contextSource"
                             password="${sample.ldap.password}"
                             url="${sample.ldap.url}"
                             username="${sample.ldap.userDn}"
                             base="${sample.ldap.base}" />

        <ldap:ldap-template id="ldapTemplate" context-source-ref="contextSource" />

        <ldap:repositories base-package="my.domain" />

    ...
    <bean id="conversionService"
          class="org.springframework.context.support.ConversionServiceFactoryBean">
         <property name="converters">
             <list>
                 <bean class="my.domain.StringToRealmConverter" />
                 <bean class="my.domain.RealmToStringConverter"/>
              </list>
         </property>
     </bean>
    ...
        <bean id="conversionServiceConverterManagerBean"
                class="org.springframework.ldap.odm.typeconversion.impl.ConversionServiceConverterManager">
            <constructor-arg ref="conversionService"/>
        </bean>

        <bean id="defaultObjectDirectoryMapperBean" class="org.springframework.ldap.odm.core.impl.DefaultObjectDirectoryMapper">
            <property name="converterManager" ref="conversionServiceConverterManagerBean" />
        </bean>
    </beans>

person Community    schedule 12.11.2014    source источник


Ответы (1)


Задача решена. Я еще раз взглянул на xsd (http://www.springframework.org/schema/ldap/spring-ldap.xsd) и внес следующие изменения, используя атрибут odm-ref:

<ldap:ldap-template id="ldapTemplate" odm-ref="defaultObjectDirectoryMapperBean" context-source-ref="contextSource" >

person Community    schedule 18.11.2014