Spring and Spring security configuration help, cannot find a bean

I keep receiving the exception with a message: "org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'userDetailsService' is defined" even though the bean is defined as a service in the UserDetailsServiceImpl class. Such as:

@Service(value="userDetailsService")
public class UserDetailsServiceImpl implements UserDetailsService{

I am using the latest Spring and Spring Security.

I am not sure what I am doing wrong. I am pasting the configuration of my spring xml files. The spring-security.xml shows that it can find beans from the servlet-context.xml when using the component-scan.

Thank you

org.springframework.beans.factory.BeanCreationException: Error creating bean with name org.springframework.security.filterChains': Cannot resolve reference to bean org.springframework.security.web.DefaultSecurityFilterChain#0' while setting bean property sourceList' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name org.springframework.security.web.DefaultSecurityFilterChain#0': Cannot resolve reference to bean org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0' while setting constructor argument with key [2]; 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 org.springframework.security.authentication.ProviderManager#0' while setting bean property authenticationManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name org.springframework.security.authentication.ProviderManager#0': Cannot resolve reference to bean 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name org.springframework.security.authenticationManager': Cannot resolve reference to bean org.springframework.security.authentication.dao.DaoAuthenticationProvider#0' while setting constructor argument with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name org.springframework.security.authentication.dao.DaoAuthenticationProvider#0': Cannot resolve reference to bean 'userDetailsService' while setting bean property 'userDetailsService'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'userDetailsService' is defined

spring-security.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/security
       http://www.springframework.org/schema/security/spring-security-3.1.xsd">


<beans:import resource="classpath*:servlet-context.xml"/> 

<global-method-security secured-annotations="enabled"></global-method-security>    

<http auto-config="true" >
    <!-- Filtering url patterns -->

    <!-- Anonymous users -->
    <intercept-url pattern="/" access="IS_AUTHENTICATED_ANONYMOUSLY" />
    <intercept-url pattern="/login*" access="IS_AUTHENTICATED_ANONYMOUSLY" />

    <!-- Login and logout controls -->
    <form-login login-page="/login" default-target-url="/profile"
        authentication-failure-url="/loginfailed" />
    <logout invalidate-session="true" logout-success-url="/"
        delete-cookies="JSESSIONID" />

</http>

<beans:bean id="authenticationProvider"
    class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
    <beans:property name="userDetailsService" ref="userDetailsService"/>
</beans:bean>



<beans:bean id="authenticationManager"
    class="org.springframework.security.authentication.ProviderManager">
    <beans:property name="providers">
        <beans:list>
            <beans:ref local="authenticationProvider" />
        </beans:list>
    </beans:property>
</beans:bean>

<authentication-manager>
    <authentication-provider user-service-ref="userDetailsService">
    </authentication-provider>
</authentication-manager>    

servlet-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">


<annotation-driven />

<resources mapping="/resources/**" location="/resources/" />

<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
</beans:bean>

                                              <!-- Data source configuration -->

<!-- JDBC configuration for ORM -->
<beans:bean id="dbDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <beans:property name="driverClassName" value="com.mysql.jdbc.Driver"/>
   <beans:property name="url" value="jdbc:mysql://localhost:3306/dbName"/>
   <beans:property name="username" value="root"/>
   <beans:property name="password" value=""/>
</beans:bean>   

<!-- Hibernate session Factory -->
<beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
   <beans:property name="dataSource" ref="dbDataSource" />

   <!-- All the model packages with hibernate annotations that need to be scanned. -->
   <beans:property name="packagesToScan">
       <beans:value>
           com.package.registration.models
       </beans:value>
   </beans:property>

   <!-- Hibernate specific properties -->
   <beans:property name="hibernateProperties">
       <beans:props>
           <beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</beans:prop>
           <beans:prop key="hibernate.show_sql">true</beans:prop>
           <beans:prop key="hibernate.format_sql">true</beans:prop>
           <beans:prop key="hibernate.hbm2ddl.auto">update</beans:prop>
           <beans:prop key="org.hibernate.transaction">true</beans:prop>
       </beans:props>
   </beans:property>
</beans:bean>

<!-- A transaction manager for working with Hibernate SessionFactories -->
<beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <beans:property name="sessionFactory" ref="sessionFactory"/>
</beans:bean>

<tx:annotation-driven transaction-manager="transactionManager" />

<context:component-scan base-package="com.package.app" />   

Answers


You need to put a component scan in your other Spring config file, not just the servlet config.

They're different contexts, one loaded by the context loader listener, one by the dispatcher servlet.


Need Your Help

What on earth is “Self-suppression not permitted” and why is Javac generating code which results in this error?

java exception java-7 try-with-resources

This new Java 7 try-with-resources construct is quite nice. Or at least, it was nice until an exception came along and ruined my day.

How to write a prototype for Number.toFixed in JavaScript?

javascript rounding precision

I need to round decimal numbers to six places using JavaScript, but I need to consider legacy browsers so I can't rely on Number.toFixed

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.