Spring No matching bean of type, expected at least 1 bean

autowired, java, spring, spring-mvc

Solution

Only a spring managed object can Autowire another component/service/repository.

`public class CustomAuthentication implements AuthenticationProvider` need to be spring managed

like

@Controller
public class AccountController

Try annotating the CustomAuthenitcation with @Component

@Component
public class CustomAuthentication implements AuthenticationProvider

and let me know how CustomAuthentication Object is created. CustomAuthentication object should be a proxy obtained by requesting to Spring(ApplicationContext.getBean() or autowired in another bean).

UPDATE:

reason for this error is you have two config files. spring-servlet.xml and spring-security.xml. Beans defined in spring-security.xml is not able to find those in other.

so you should try something like `<import resource="spring-servlet.xml"/>` in `spring-security.xml` .

Problem

Getting error ``` No matching bean of type [foo.bar.service.AccountService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} ``` my service: ``` public interface AccountService { @Service public class AccountServiceImpl implements AccountService { ``` So I should get the implementation Where I am trying to get it : ``` public class CustomAuthentication implements AuthenticationProvider { @Autowired private AccountService accountService; ``` In my other class also doing same thing, but there it works. ``` @Controller public class AccountController { @Autowired private AccountService accountService; ``` When I remove the those 2 lines from my `CustomAuthentication`, getting no errors. configuration just incase: ``` <context:component-scan base-package="foo.bar" /> ```

Original source