Je travaille sur Spring Security 3 de Peter Mularien et je rencontre un problème lors de la configuration de UserDetailsManager.Spring Security 3: Problème autowiring UserDetailsManager/JdbcUserDetailsManager
je crée le haricot JdbcUserDetailsManager comme suit:
<bean id="jdbcUserService" class="org.springframework.security.provisioning.JdbcUserDetailsManager">
<property name="dataSource" ref="mySqlDb" />
<property name="authenticationManager" ref="authenticationManager" />
</bean>
et lier automatiquement son interface UserDetailsManager dans mon contrôleur comme ceci:
@Autowired
public UserDetailsManager userDetailsManager;
Lorsque je démarre l'application pour le tester, je reçois l'exception suivante:
Error creating bean with name 'changePasswordController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.security.provisioning.UserDetailsManager com.ebisent.web.ChangePasswordController.userDetailsManager; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [org.springframework.security.provisioning.UserDetailsManager] is defined: expected single matching bean but found 2: [org.springframework.security.provisioning.JdbcUserDetailsManager#0, jdbcUserService]
J'ai cherché à travers mon projet pour voir si J'ai peut-être installé (Jdbc) UserDetailsManager ailleurs, mais je ne semble pas l'avoir fait. Si je supprime l'attribut "id" dans la définition du bean, alors l'ambiguïté est entre JdbcUserDetailsManager # 0 et JdbcUserDetailsManager # 1.
Mes références web.xml app-config.xml en deux endroits:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/spring/app-config.xml</param-value>
</context-param>
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/spring/app-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Comment chargez-vous le contexte de l'application? –
J'ai ajouté une modification montrant que j'ai app-config.xml deux fois dans mon fichier web.xml. Est-ce la source de mon problème? – outis