私のプロジェクトでは、カスタムの userDetailsService が必要だったので、特定のパッケージで次のように宣言します。
@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.
つまり、これは@Service
Bean を作成したことを意味しますが、security.xml はそれを見つけられないのでしょうか?