获取错误
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)}
我的服务:
public interface AccountService {
@Service
public class AccountServiceImpl implements AccountService {
所以我应该实施
我想要的地方:
public class CustomAuthentication implements AuthenticationProvider {
@Autowired
private AccountService accountService;
在我的另一个班级也做同样的事情,但它有效。
@Controller
public class AccountController {
@Autowired
private AccountService accountService;
当我从CustomAuthentication
删除这两行时,没有错误。
配置只是因为:
<context:component-scan base-package="foo.bar" />
答案 0 :(得分:7)
只有Spring托管对象才能自动装配另一个组件/服务/存储库。
public class CustomAuthentication implements AuthenticationProvider
需要进行春季管理
喜欢
@Controller
public class AccountController
尝试使用@Component
注释CustomAuthenitcation@Component
public class CustomAuthentication implements AuthenticationProvider
让我知道如何创建CustomAuthentication对象。 CustomAuthentication对象应该是通过请求Spring(ApplicationContext.getBean()或在另一个bean中自动装配)获得的代理。
更新:
此错误的原因是您有两个配置文件。 spring-servlet.xml和spring-security.xml。 spring-security.xml中定义的bean无法在其他bean中找到它们。
所以你应该在<import resource="spring-servlet.xml"/>
中尝试类似spring-security.xml
的内容。
答案 1 :(得分:0)
请尝试<context:component-scan base-package="foo.bar.*" />
或<context:component-scan base-package="foo.bar.service" />
。我相信它会奏效。
答案 2 :(得分:0)
你必须在AccountServiceImpl类@Service(“accountService”)
上写