@Autowired - No qualifying bean of type 'com.wusuq.dao.LoginDAO' available

Viewed 38

The project structure is

Actually, I am integeration the Spring Security in my Spring MVC project. Simpley I want to do is to add the LoginDAO in the customAuthenticationProvider class. But I am getting this exception.

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.wusuq.dao.LoginDAO' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1486) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585) ... 93 more The CustomAuthenticationProvider class code is

package com.wusuq.security;
import java.util.ArrayList;
import java.util.List;
import com.wusuq.dao.LoginDAO;

@Component
public class CustomAuthenticationProvider implements AuthenticationProvider {
    
@Autowired
private LoginDAO login;
    
    @Override
    public Authentication authenticate(Authentication authentication) throws AuthenticationException
    {
            String userName = authentication.getName();
            String password = authentication.getCredentials().toString();

            if (authorizedUser(userName, password))
            {
                    List<GrantedAuthority> grantedAuths = new ArrayList<>();
                    grantedAuths.add(new SimpleGrantedAuthority("ROLE_ADMINN"));
                    Authentication auth = new UsernamePasswordAuthenticationToken(userName, password, grantedAuths);
                    System.out.println(auth.getAuthorities());
                    return auth;
            }
            else
            {
                    throw new AuthenticationCredentialsNotFoundException("Invalid Credentials!");
            }
    }

    private boolean authorizedUser(String userName, String password)
    {
            System.out.println("username is :" + userName+" and password is "+password );
            if("Chandan".equals(userName) && "Chandan".equals(password))
                    return true;
            return false;
    }

    @Override
    public boolean supports(Class<?> authentication)
    {
            return UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication);
    }

    public LoginDAO getLogin() {
        return login;
    }

    public void setLogin(LoginDAO login) {
        this.login = login;
    }

}

LoginDAO class code is

     @Transactional
public class LoginDAO {
    @Autowired
    private SessionFactory sessionFactory;
    Session session = null;
    Criteria criteria = null;
    Transaction tx = null;

    public LoginDAO() {
        super();
    }
}

secirity-config.xml file

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


    <sec:http auto-config="true" use-expressions="true">
        <sec:form-login login-page="/"
            login-processing-url="/authenticateUser" 
            authentication-failure-url="/login" username-parameter="username"
            password-parameter="password"
            default-target-url="/menu"
            always-use-default-target="true"
             />
            
        <sec:access-denied-handler error-page="/jsp/403.jsp" />
        
        
        <sec:intercept-url pattern="/" access="permitAll" />
         <sec:intercept-url pattern="/JS/**" access="permitAll" /> 
         <sec:intercept-url pattern="/img/**" access="permitAll" /> 
        <!--  <sec:intercept-url pattern="/JS/**" access="permitAll" /> -->
        
        
        <sec:intercept-url pattern="/**" access="hasAuthority('ROLE_ADMINN')" />
        
        <sec:session-management invalid-session-url="/login" />
        <sec:logout delete-cookies="JSESSIONID" logout-url="/logout" />
    </sec:http>
    
    
    <context:component-scan base-package="com.wusuq.security" />

    <sec:authentication-manager>
        <authentication-provider ref="customAuthenticationProvider" />
        
    </sec:authentication-manager>
    
    

</beans:beans>

Can some please guide me how to fix this issue I want to Autowire the LoginDAO in CustomAuthentionProvider class to authenticate the user from Databbase. Help will be appreciated. Thanks

0 Answers
Related