パラメータを使用してSpringルックアップメソッドを挿入する方法はありますか?たとえば、プロトタイプスコープのBeanをコンストラクタを介して任意のパラメータに渡しながらインスタンス化できるようにしたいと考えています。パラメータを持つSpringルックアップメソッドの注入
7
A
答えて
2
フィールド/セッター注入によって注入できます。 (コンストラクタインジェクションは、サポートされていますが、春になると目が覚めます)
0
です。 Springは "メソッドインジェクション"と呼ばれるものをサポートしていますが、あなたが考えているものとは異なります。 Springはコンストラクタインジェクションをサポートしていますが、あなたはコンストラクタを自分で呼び出すのではなく、Springはそれを配線しています。
代わりに、クラスをインスタンス化し、任意のパラメータを自分で渡すためにリフレクションを使用することができます。
Class<MyObject> clazz = MyObject.class; // this can be looked up or stored in a field, etc.
MyObject myObject = clazz.getConstructor(String.class, int.class)
.newInstance("arbitrary parameter", 42);
1
この重要な機能は、最終的には春4.1.0.RC2で追加されたように見えます。私はそれを試して、それは動作するようです。
これはJIRAチケットSPR-7431 ("Passing lookup-method arguments to created bean constructor")の一部として添加した:
<ルックアップ方法/>は、任意の数のパラメータを指定できるようにすべきです。これらのパラメータは、新しく作成したBeanのコンストラクタに直接渡す必要があります。
機能が最後に追加された方法の詳細については、this blog postがJIRAチケットを開いた人によって書かれています。
関連する問題
- 1. 複数のパラメータを持つUnity/Caliburn Micro、注入コンストラクタ
- 2. 複数のパラメータを持つRESTful Springサービス
- 3. 注入パラメータ
- 4. 注入URL()Spring Autowired
- 5. 4つの入力パラメータを持つカルマンフィルタ
- 6. Java Spring注入文字列
- 7. spring portlet mvc:パラメータを保持
- 8. 入力パラメータを持つSQLCLRストアドプロシージャ
- 9. BeanプロパティへのSpring Spel式の注入
- 10. Spring - ServletContextListenerへの依存性の注入
- 11. クラスパスリソースをSpring 3 Beanに注入
- 12. Spring Beanにファイルリソースを注入する
- 13. ASP.NET MVC Global.asax Springでの注入
- 14. Springでのランタイム依存性注入
- 15. Spring MVCの依存性注入?
- 16. ASP.NET 5依存関係注入、パラメータ付き注入
- 17. Spring @Cachable:パラメータを持つメソッドでは機能しません。
- 18. Ninject ninjectを持つジェネリック型のすべてのインスタンスの注入
- 19. Spring @Scheduled注入遅延時間
- 20. CGLIB、Spring、コンストラクタによる注入
- 21. Guice to Spring依存性注入
- 22. Spring依存性注入@Autowired setterなし
- 23. ウィンザーを使った可変パラメータ注入
- 24. コンストラクタ/パラメータ注入の選択方法は?
- 25. 注釈を介した注入とSpringのXMLファイルを介する注入継承に関する制限
- 26. Ninjectファクトリメソッドを持つコンストラクタにIEnumerableを注入
- 27. パラメータを持つデコレータ
- 28. 注入されたサービスとデータを持つクラスの依存性注入の構成
- 29. 依存性注入サービスとリポジトリを持つユニットテストコントローラ
- 30. 多くのパラメータを持つC#sqlの挿入
コンストラクタ注入よりもセッタ注入が優先されるのはなぜですか?私は彼らが同等だったと思った。 –
コンストラクタインジェクションは、インスタンス化する循環依存をより困難にするかもしれません。 – Bozho
@Bozho:実際には良いことです...循環依存関係を使うべきでしょうか? – TWiStErRob