0

私のプロジェクトでは、カスタムの userDetailsS​​ervice が必要だったので、特定のパッケージで次のように宣言します。

@Service
@Ihm(name = "userDetailsService")// ignore Ihm, it's just a custom annotation, which works fine
public class UserDetailsServiceImpl implements UserDetailsService 

そして、私の application-security.xml ファイルに、component-scan を追加しました。

<context:component-scan base-package="path(including the userDetailsService for sure)" />

<context:annotation-config />

これは、注釈付きの Bean を見つけるのに役立ちませんでした。Bean が定義されていない例外を取得しました。

私の場合に機能した唯一の方法は次のとおりです。これはうまくいきます。

さらに面白いのは、コンポーネント スキャンと注釈の両方を保持すると、ID が重複しています (複数の Bean、ID の指定を要求する) エラーが発生したことです。

 More than one UserDetailsService registered. Please use a specific Id reference in <remember-me/> <openid-login/> or <x509 /> elements.

つまり、これは@ServiceBean を作成したことを意味しますが、security.xml はそれを見つけられないのでしょうか?

4

1 に答える 1