2016-04-25 16 views
2

ユーティリティクラスにコンポーネントをオートワイヤリングする際に問題が発生しました。ユーティリティクラスは当初静的メソッドを持っていましたが、インスタンスメソッドを作成しました。コンポーネントをユーティリティクラスにオートワイヤリングできません

私は@Componentとユーティリティクラスを定義し、クラス内のユーティリティクラスが含まれているパッケージが@ComponentScan、のために指定された親ディレクトリの下にある

に入れ = "トップレベルディレクトリ"には、他のすべての自動コンポーネントのパッケージも含まれています。

実行するユーティリティクラスを取得するために、私はExistingComponentをユーティリティクラスのコンストラクタに渡さなければなりませんでした。

Springの使用4.1.6。

これはおそらく基本的なものですが、クリックしていない可能性があります。私はここで何が欠けていますか?

ありがとうございました。

UPDATE 1

は、ユーティリティクラスを呼び出しているクラスは、次のようになります。

class UsingClass { 
@Autowired 
MyUtilityClass myUtilityClass 
... 
    def method1() { 
    String variable1 = "some data" 
    myUtilityClass.utilityMethod(variable1) 
    ... 
    } 
} 

は、もともと私は、静的として内部ユーティリティメソッドを持っていたし、オートワイヤリングなしでユーティリティクラスを使用しようとしましたそれ。

+0

「MyUtilityClass」のメソッドを呼び出すクラスを表示します。 – chrylis

+0

同じパッケージ内の他のクラスはどうですか?彼らはautowireをサポートしますか? – Priyamal

+0

呼び出しクラスを質問に編集します。 – chrylis

答えて

1

これはBeanのXML構成ファイルのどこかにありますか?

<context:component-scan base-package="com.your.package" /> 

あなたのコンポーネントが格納されている場所を示しベースパッケージ。

これにより、@Componentで注釈が付けられたBeanを見つけることができるように、Springはパッケージをスキャンできます。

これは、より深くhereで説明されています。

+0

XMLを使用していません。 ** @ ComponentScan **アノテーションを使用すると、_value_属性は 'util'ディレクトリの上のディレクトリと他のコンポーネントディレクトリの上に設定されます。つまり、_value _ = "com.my.top-level-dir"の場合、autowiredパッケージは "com.my.top-level-dir.pkg1"、 "com.my.top-level-dir"というパッケージに入っています。 pkg2 "など...ユーティリティクラスは、パッケージ" com.my.top-level-dir.util "にあります。 – Les

+0

私は参照してください。うん、もしあなたが完全にアノテーションを動かすのかどうか分からなかった。アノテーションを正しく実行するには、アノテーションのタグが必要です。 @Autowiredにはそれ以上のものが必要だと思う。私はこれを今日さらに見て、結果を報告します。更新していただきありがとうございます! –

関連する問題