0

私が取り組んでいるプロジェクトは、春に作成されたフレームワークであり、他のプロジェクトで使用するために jar としてパッケージ化される予定です。

現在、静的な自己参照フィールドを自動配線しようとしています。AuthenticationClient の Bean を作成しましたが、自動配線する資格のある Bean が見つからないという春の文句がまだあります。静的フィールドの配線は適切なオプションではないことを理解しています。しかし、私には代替手段がありません。

public class AuthenticationClient {

    private static AuthenticationClient client;
    private @Autowired KerberosAPI kerberosAPI;
    private @Autowired KerberosSessionManager kerberosSessionManager;


    public AuthenticationClient getAuthenticationClient(){
        return client;
    }

    @Autowired
    public void setAuthenticationClient(AuthenticationClient client){
        AuthenticationClient.client = client;
    }
}

サーブレット コンテキスト: このようにサーブレット コンテキスト内で自分の Bean を宣言しました

    <beans:bean class="com.security.kerberos.KerberosAPIImpl" />
    <beans:bean class="com.security.kerberos.model.KerberosSessionManager"/>    
    <beans:bean class="com.security.rest.client.AuthenticationClient" />

詳細な例外はこちら:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.security.rest.client.AuthenticationClient] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}

アップデート:

私があなたに言ったように、プロジェクトはjarとしてパッケージ化される予定です。ここで、jar をインポートする必要があるプロジェクトのコントローラーで AuthenticationClient のインスタンスを取得したいと考えています。親プロジェクトは春のプロジェクトではない可能性があるため、自動配線せずに AuthenticationClient のインスタンスを取得する方法が必要です。この道を行かなければならない理由。さらに情報が必要な場合はお知らせください。

@Controller

public class Test {

@RequestMapping(value="/test")
public void test(){
    AuthenticationClient client = AuthenticationClient.getAuthenticationClient();
}

}

4

1 に答える 1

2

@Resourceアノテーションを付けてみてください。

@Autowired候補を探すときに、注釈付き Bean 自体をスキップします。

同じ Bean で Bean を自動配線する方法を参照してください

于 2013-07-24T19:28:05.043 に答える