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

CustomAuthenitcationに@Componentアノテーションを付けてみてください

@Component
public class CustomAuthentication implements AuthenticationProvider

CustomAuthenticationオブジェクトの作成方法を教えてください。CustomAuthenticationオブジェクトは、Spring(ApplicationContext.getBean()に要求するか、別のBeanに自動配線されたプロキシ)である必要があります。

アップデート:

このエラーの理由は、2つの構成ファイルがあるためです。spring-servlet.xmlおよびspring-security.xml。spring-security.xmlで定義されたBeanは、他のBeanを見つけることができません。

したがって、のようなものを試す必要があり<import resource="spring-servlet.xml"/>ますspring-security.xml

于 2012-12-11T08:50:14.453 に答える
0

<context:component-scan base-package="foo.bar.*" /> またはをお試しください<context:component-scan base-package="foo.bar.service" />。私はそれがうまくいくと信じています。

于 2012-12-11T09:23:36.853 に答える
0

AccountServiceImplクラス@Service( "accountService")に書き込む必要があります

于 2013-11-25T01:14:54.860 に答える