2017-11-17 13 views
0

私は8つのメンバを持つSpringコンポーネントを持っています。たくさんのフィールドを持つSpringコンストラクタの注入

私は現在、これらの8人のメンバーにフィールドインジェクションをautowireしています。

これらのメンバーをプライベートファイナルにして、コンストラクタインジェクションを設定して設定します。

これは簡単に行うことができますが、今は8つのパラメータを持つコンポーネントコンストラクタがあります。

私はセッター注入を使用してこれらの値をXMLファイルに設定できますが、これはやりたくありません。

他の選択肢はありますか?

EDIT:

このコンポーネントは、ただ一つのことを行います。しかし、それは他のいくつかのサービスを呼び出すことを含む。したがって、8回の注射

+1

のようなものになります最後の。 – ESala

+0

良い点 - 私はそれを試みて、それはオプションではなかったことを忘れてしまった;) –

+2

あなたのコンストラクタを生成するためにロンボクを使う? – chrylis

答えて

5

まず、代替手段はありません。
第2に、コンストラクタに8つのパラメータがある場合、コンストラクタは正しく設計されていません。あなたはクラスの構造と責任について再考すべきだと思います。クラスを2つまたは3つの別々の豆に分割して注入することを検討してください。

コンストラクタは8つの引数がある場合、ほとんどのケースでは、SRP(シングル責任の原則)あなたはの.propertiesファイルにこれらのパラメータの初期値を設定してから、このプロパティを読み取ることができ、すべての

0

まずvioalatingされますファイルをpojo構成クラスとして扱い、.propertiesファイルをpojoに変換するのは非常に簡単です。

ので、コンストラクタは、あなたがセッターでそれを行う場合は、その後、彼らはすることはできません。この

@Autowired 公共温度(ConfigPojoClassの設定){ ..... }

関連する問題