title: Spring dependency issue - no matching editors or conversion strategy found
body: <p>I have a web application which fails while deployment. I get following error:</p>
  
  <pre><code>Aug 8, 2014 7:00:21 PM org.springframework.web.context.ContextLoader initWebApplicationContext
  SEVERE: Context initialization failed
  org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.filterChains': Cannot resolve reference to bean 'org.springframework.security.web.DefaultSecurityFilterChain#2' while setting bean property 'sourceList' with key [2]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.web.DefaultSecurityFilterChain#2': Cannot resolve reference to bean 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0' while setting constructor argument with key [3]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0': Cannot resolve reference to bean 'CustomLoginSuccessHandler' while setting bean property 'authenticationSuccessHandler'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'CustomLoginSuccessHandler': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.abc.xyz.ldapservices.LDAPUtil com.abc.xyz.web.CustomLoginSuccessHandler.ldapContact; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ldapContact' defined in ServletContext resource [/WEB-INF/spring/spring-security.xml]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type '$Proxy213 implementing org.springframework.ldap.core.LdapOperations,org.springframework.beans.factory.InitializingBean,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised' to required type 'org.springframework.ldap.core.LdapTemplate' for property 'ldapTemplate'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [$Proxy213 implementing org.springframework.ldap.core.LdapOperations,org.springframework.beans.factory.InitializingBean,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [org.springframework.ldap.core.LdapTemplate] for property 'ldapTemplate': no matching editors or conversion strategy found
      at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:329)
      at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107)
      at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:353)
      at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:154)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1391)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1132)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
      at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
      at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
      at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
      at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
      at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:589)
      at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
      at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
      at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)
      at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
      at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
      at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:661)
      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
      at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
      at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
      at weblogic.servlet.internal.EventsManager.executeContextListener(EventsManager.java:241)
      at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:198)
      at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:183)
      at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1783)
      at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2807)
      at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1661)
      at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:822)
      at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360)
      at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356)
      at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
      at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138)
      at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
      at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:213)
      at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:208)
      at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
      at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:70)
      at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:24)
      at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:729)
      at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
      at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:258)
      at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:48)
      at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165)
      at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
      at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:586)
      at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:148)
      at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:114)
      at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:339)
      at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:846)
      at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1275)
      at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:442)
      at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:176)
      at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195)
      at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13)
      at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:68)
      at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:550)
      at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295)
      at weblogic.work.ExecuteThread.run(ExecuteThread.java:254)
  Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.web.DefaultSecurityFilterChain#2': Cannot resolve reference to bean 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0' while setting constructor argument with key [3]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0': Cannot resolve reference to bean 'CustomLoginSuccessHandler' while setting bean property 'authenticationSuccessHandler'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'CustomLoginSuccessHandler': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.abc.xyz.ldapservices.LDAPUtil com.abc.xyz.web.CustomLoginSuccessHandler.ldapContact; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ldapContact' defined in ServletContext resource [/WEB-INF/spring/spring-security.xml]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type '$Proxy213 implementing org.springframework.ldap.core.LdapOperations,org.springframework.beans.factory.InitializingBean,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised' to required type 'org.springframework.ldap.core.LdapTemplate' for property 'ldapTemplate'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [$Proxy213 implementing org.springframework.ldap.core.LdapOperations,org.springframework.beans.factory.InitializingBean,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [org.springframework.ldap.core.LdapTemplate] for property 'ldapTemplate': no matching editors or conversion strategy found
      at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:329)
      at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107)
      at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:353)
      at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:154)
      at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:615)
      at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:148)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1049)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:953)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:490)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
      at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
      at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
      at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
      at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
      at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:323)
  </code></pre>
  
  <p>I am loading my configuration XML's in <strong>web.xml</strong> using:</p>
  
  <pre><code>&lt;context-param&gt;
          &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;
          &lt;param-value&gt;
              WEB-INF/spring/spring-security.xml
              WEB-INF/spring/applicationContext-db.xml
              WEB-INF/spring/applicationContext.xml
          &lt;/param-value&gt;
      &lt;/context-param&gt;
  </code></pre>
  
  <p>The error comes from my <strong>spring-security.xml</strong> file, which has :</p>
  
  <pre><code>&lt;security:http auto-config="true" use-expressions="true"
          access-denied-page="/auth/denied"&gt;
          &lt;security:intercept-url pattern="/auth/login"
              access="permitAll" /&gt;
          &lt;security:intercept-url pattern="/main/admin"
              access="hasRole('ROLE_ADMIN')" /&gt;
          &lt;security:intercept-url pattern="/main/common"
              access="hasRole('ROLE_RI')" /&gt;
  
          &lt;security:form-login login-page="/auth/login"
              authentication-failure-url="/auth/login?error=true"
              default-target-url="/main/common" authentication-success-handler-ref="CustomLoginSuccessHandler" /&gt;
  
  
          &lt;security:logout invalidate-session="true" logout-url="/auth/logout"
              success-handler-ref="CustomLogoutSuccessHandler" /&gt;
  
      &lt;/security:http&gt;
  
      &lt;bean id="CustomLoginSuccessHandler"
          class="com.abc.xyz.web.CustomLoginSuccessHandler"&gt;
          &lt;property name="ldapContact" ref="ldapContact"&gt;&lt;/property&gt;
      &lt;/bean&gt;
      &lt;bean id="CustomLogoutSuccessHandler"
          class="com.abc.xyz.web.CustomLogoutSuccessHandler"&gt;
      &lt;/bean&gt;
  
      &lt;security:authentication-manager&gt;
          &lt;security:ldap-authentication-provider
              user-search-filter="(uid={0})" user-search-base="ou=Users"
              group-search-filter="(roleOccupant={0})" group-search-base="ou=Groups"
              group-role-attribute="cn" role-prefix="ROLE_"&gt;
          &lt;/security:ldap-authentication-provider&gt;
      &lt;/security:authentication-manager&gt;
  
      &lt;security:ldap-server url="ldap://localhost:389/dc=maxcrc,dc=com"
          manager-dn="cn=Manager,dc=maxcrc,dc=com" manager-password="secret" /&gt;
  
      &lt;security:global-method-security
          secured-annotations="enabled" /&gt;
  
  &lt;!--    &lt;bean id="placeHolderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&gt;
          &lt;property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/&gt;
          &lt;property name="location" value="/WEB-INF/classes/ldap.properties"&gt;&lt;/property&gt;
      &lt;/bean&gt; 
    &lt;context:property-placeholder location="classpath:WEB-INF/classes/ldap.properties"/&gt;
  --&gt;
      &lt;bean id="contextSource"
          class="org.springframework.security.ldap.DefaultSpringSecurityContextSource"&gt;
          &lt;constructor-arg value="ldap://localhost:389/dc=maxcrc,dc=com" /&gt;
          &lt;property name="userDn" value="cn=Manager,dc=maxcrc,dc=com" /&gt;
          &lt;property name="password" value="secret" /&gt;
      &lt;/bean&gt;
  
      &lt;bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate"&gt;
          &lt;constructor-arg ref="contextSource" /&gt;
          &lt;property name="ignorePartialResultException" value="true" /&gt;
      &lt;/bean&gt;
      &lt;bean id="ldapContact" class="com.abc.xyz.ldapservices.LDAPUtil"&gt;
          &lt;property name="ldapTemplate" ref="ldapTemplate" /&gt;
      &lt;/bean&gt;
  </code></pre>
  
  <p>My <strong>CustomLoginSuccessHandler</strong> class is like:</p>
  
  <pre><code>public class CustomLoginSuccessHandler implements AuthenticationSuccessHandler {
  
  
      /** The redirect strategy. */
      private RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();
  
      /** The ldap contact. */
      @Autowired
      LDAPUtil ldapContact;
  </code></pre>
  
  <p>I am new to spring but i guess it is due to the bean dependencies configuration. </p>
  
  <p><strong>1. What is the sequence of spring bean dependency, does it uses
      sequence of XML configuration from web.xml?<br>
   2. Suppose I refer bean A
      in a XML file, which is defined below where it is refered, will it
      create any problem?</strong></p>
  
  <p><strong>EDIT</strong></p>
  
  <p>My LDAPUtil class is like:</p>
  
  <pre><code>private LdapOperations ldapTemplate;
  
  public void setLdapTemplate(LdapTemplate ldapTemplate) {
              this.ldapTemplate = ldapTemplate;
  }
  </code></pre>