2

得到错误

 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;

当我从我的 中删除这 2 行时CustomAuthentication,没有错误。

配置以防万一:

    <context:component-scan base-package="foo.bar" />
4

3 回答 3

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 无法在其他中找到。

所以你应该尝试类似<import resource="spring-servlet.xml"/>in 的东西spring-security.xml

于 2012-12-11T08:50:14.453 回答
0

Please try <context:component-scan base-package="foo.bar.*" /> or <context:component-scan base-package="foo.bar.service" />. I believe it would work.

于 2012-12-11T09:23:36.853 回答
0

you have to write on AccountServiceImpl class @Service("accountService")

于 2013-11-25T01:14:54.860 回答