問題タブ [autowired]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - 工場で構築された一般的な Bean を使用した Spring @Autowireing
複雑な初期化スキームを持つ一連のクラスがあります。基本的に、取得する必要のあるインターフェイスから始めて、一連の呼び出しを行い、最終的にそのインターフェイスを実装するオブジェクトを作成します。
これを処理するために、インターフェイスを指定して最終的なオブジェクトを生成できるファクトリ クラスを作成しました。このファクトリを Bean にし、さまざまなサービス Bean を、実装するインターフェイスのパラメータを使用して、このファクトリ オブジェクトを介してインスタンス化されるように XML で指定しました。
これはうまく機能し、必要な豆を完全に手に入れることができます。残念ながら、コンポーネントのスキャンによって発見されたコントローラー クラスからそれらにアクセスしたいと考えています。ここで @Autowired を使用していますが、Spring はこれらがどのタイプのオブジェクトであるかを認識していないようです。@Autowired はタイプによって機能するため、私は SOL です。
ここで @Resource(name="beanName") を使用すると完全に機能しますが、一部の Bean に @Resource を使用し、他の Bean に @Autowired を使用するのは奇妙に思えます。
タイプごとに異なるファクトリーメソッドを持たずに、これらの Bean ごとにファクトリーが作成するインターフェースを Spring に知らせる方法はありますか?
ちなみに、私はSpring 2.5.6を使用しています。それ以外の場合は、JavaConfig全体を忘れてしまいます。
工場クラス:
アプリのコンテキスト:
私のコントローラー:
tomcat - グレイルでサービスを非サービスに渡す?
次のように定義されている非サービスクラスがあります。
ここで、Bはgrailsサービスです。私のユニットテストでは、これを試しました:
A a = new A( new B() );
ただし、何らかの理由でb
設定されることはなく、テストの実行時に変数b [local, the argument to the mehod]
がIntelli-Jのデバッガーに表示されることもありません。つまり、引数の名前をに変更できservice
、デバッガーはそれを未定義として表示します。
サーバーを起動しようとするとInitialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException
、が表示されるので、これは関連していると思います。
何が起きてる?
grails - 統合テストが失敗する - Grails の自動配線の問題
なんらかの理由で、統合テストを実行しようとすると、次の結果が得られます。
CGLib が注入されたクラスをラップし、テストが失敗するのはなぜですか? grails 1.3.6 を実行しており、Intelli-J Ultimate 10.01 でテストを実行しています。
java - オートワイヤー ソースのコンストラクター引数
これは正確には何が原因ですか?
私が必要としているのは、バリデーター、LDAP 接続、データベース接続の 3 つの自動配線です。
私はそれを呼びます:
これらのパラメーターの順序を変更すると、別の Bean が原因でエラーが発生するようです。サインインしていないため、UserDetails などはありません。
java - バリデーターでの自動配線
独自のバリデーター クラスを使用し、コントローラーで @Autowired -annotation でマークします。データベースと LDAP 接続も使用する必要があるため、それらも同じコントローラー コンストラクターで自動配線します。
私のバリデーターはデータベースと LDAP 接続も使用する必要があるため、そのコンストラクターでデータベースと LDAP を自動配線する必要があります。それは確かに二重自動配線です!しかし今、私の問題は、データベースとldapをバリデーターで機能させるにはどうすればよいですか? 配線がない場合、null を返します。何か助けはありますか?
これは、自動配線に関する以前の質問の続きです。
java - FactoryBeanスプリングによって作成されたBeanを管理するにはどうすればよいですか?
FactoryBeanを使用して、複雑なインスタンス化ロジックを必要とする可能性のあるオブジェクトをプログラムで作成できます。
しかし、によって作成された豆FactoryBean
は春の管理にはならないようです。この解釈は正しいですか?もしそうなら、何か良い回避策はありますか?私の問題を説明するために、短いコードサンプルが含まれています。
ApplicationContext:
工場での実装:
工場で作成されたクラス:
java - Java での @Autowired アノテーションの利点
間違った英語のせいか、@Autowired アノテーションを使用する利点が理解できませんでした。
チュートリアルによると、@Autowired を使用して、最初のケース (I.) を 2 番目のケース (II.) に単純化できます。
私の質問は、 @Autowired の意味は何ですか? @Autowired を使用しないと、コンパイラは "EmpDao emDao" と "EmpManager" が宣言に従って密接に関連していることを理解できるため、これ以上はわかりません。
ここから引用されたコード
私。
Ⅱ.
spring - NULL を返すシングルトンと @Autowired
リポジトリを管理するリポジトリ マネージャーがいます。プロパティをインスタンス化する @Autowired がありますが、それらは常に null です。Bean は xml で正しく構成されています。何か理由は?
dao.xml
ユーザーリポジトリ.java
web-services - @WebServiceをSpringに対応させる方法
変数を自動配線しようとしているWebサービスがあります。クラスは次のとおりです。
ただし、Webサービスにアクセスしようとすると、Failバージョンが返されます。これは、upgradeControllerが自動配線されていないことを意味します。これが私のapplicationContextです:
@WebServiceクラスが春を認識し、自動配線が行われるようにするにはどうすればよいですか?
java - 春の自動配線
いたるところに注入されるクラスXがあるとしましょう(たとえば、100以上の他のBean)。X のインスタンスは 1 つしかないため、タイプごとにオートワイヤーするのが理にかなっているようです。私は次のようなことができることを望んでいました:
そして、魔法のようにあちこちに自動配線します。残念ながら、オートワイヤーは逆の方法で機能するようです。つまり、オートワイヤーなしで X を宣言し、すべての OTHER Bean をタイプごとにオートワイヤーするように宣言します。
タイプ X をインジェクトする可能性のある Bean を変更する必要があるため、これがどのような効果をもたらしたかはわかりません (つまり、X がインジェクトされる可能性のある N 個の場所を探し出すことは、まさに避けたいことです)。私が望むのは、ソース Bean を自動配線 (他の Bean に自動配線されることを意味します) としてマークし、すべてのターゲット Bean を魔法のように配線することです。出来ますか?