問題タブ [jsr299]
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.
jsf - WebBeans (JSR-299) 会話コンテキストが JSF に関連付けられているのはなぜですか?
Web Beans 仕様(JSR-299)のパブリック レビュー ドラフトを読んでいるのですが、なぜ JSF と「緊密に結合」されているのか疑問に思っています。
特に Conversation Context は JSF のみ指定されているようです。
JSF と EJB3 を統合することが WebBeans の目標であることは理解しています。しかし、会話の概念をより一般的なレベル (特定の Web フレームワークではなく一般的なサーブレットに対して) で指定することは意味がないのでしょうか?
これには技術的な理由がありますか?Seam (ある種の WebBeans-Prototype) も Wicket をサポートし、会話の概念を提供するため、それはほとんどあり得ないと思います。
サーブレット レベルで会話スコープがあると便利だと思います (会話スコープの Bean をサーブレットに注入する)。私の理解では、これは現在の仕様には当てはまりません (8.5.4 章を参照)。それとも、ここで何かを誤解していますか...
java - 溶接での外部 (サードパーティ) Bean の解決
ほんの数か月前に仕様がリリースされたので、まだあまり普及していないことはわかっています。
私はまだ溶接を「インストール」していません。読んでいるだけです。この質問によって、この重要な点を正しく理解していることを確認したいと思います。
サードパーティの jar にある Bean の解決は<alternatives>
、beans.xml
.
そうでない場合、持っていないサードパーティのライブラリから Bean を使用する方法はbeans.xml
?
jar をクラスパスに置くことは、サードパーティの jar に当てはまらない にない限り機能しbeans.xml
ませMETA-INF
ん。(この件に関する Gavin King の投稿を参照してください)
jakarta-ee - 1つのクラスに対して複数のCDI/溶接Beanをインスタンス化する方法は?
Springでは、xml confで対応するBeanを定義することにより、任意のクラスをインスタンス化することが可能でした。同じクラスに対して、異なるパラメーターを使用して複数のBeanをインスタンス化することも可能でした。
CDIにもそのような機能がありますか?つまり、異なる初期化パラメーターを使用して同じクラスの異なるインスタンスを作成することは可能ですか?
クラスを変更せずにBeanを作成することも可能ですか...つまり、アノテーションを追加せずに作成できますか?
追加した
例を挙げましょう。
同じクラスの2つのインスタンスをインスタンス化し、異なるフィールド値で初期化するにはどうすればよいですか?
java - CDI を使用して外部ライブラリから Bean を注入する方法は?
JSR-299 CDI を使用して、外部ライブラリから (注釈なしの) Bean を注入するにはどうすればよいですか?
例:
インターフェイス X とその実装は、サード パーティのライブラリから取得されます。どの実装を使用するかを決定するにはどうすればよいですか?
X インターフェイスを使用しているが実装が異なる複数のクラスがある場合はどうなりますか?
spring - Spring と javax.enterprise.inject の関係は?
ここでJava EEアプリケーションサーバーに関するウィキペディアの記事を読んでいました。
http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition#Java_EE_5_certified
Java App Services が実装する 2 つの API は次のとおりです。
これらは両方とも、アプリケーション コンテキストと依存性注入 JSR-299 に関連しています。これらの API については聞いたことがありませんでした。Spring はこれらの API を実装していますか? もしそうなら、それは誰にとっても重要ですか?
cdi - CDI リソースはどこで宣言すればよいですか?
JSR-299 (CDI) はリソースの (残念ながら命名された) 概念を導入します: http://docs.jboss.org/weld/reference/1.0.0/en-US/html/resources.html#d0e4373
You can think of a resource in this nomenclature as a bridge between the Java EE 6 brand of dependency injection (@EJB, @Resource, @PersistenceContext and the like) and CDI's brand of dependency injection.
The general gist seems to be that somewhere (and this will be the root of my question) you declare what amounts to a bridge class: it contains fields annotated both with Java EE's @EJB or @PersistenceContext or @Resource annotations and with CDI's @Produces annotations. The net effect is that Java EE 6 injects a persistence context, say, where it's called for, and CDI recognizes that injected PersistenceContext as a source for future injections down the line (handled by @Inject).
My question is: what is the community's consensus--or is there one--on:
- what this bridge class should be named
- where this bridge class should live
- whether it's best to localize all this stuff into one class or make several of them
...?
Left to my own devices, I was thinking of declaring a single class called CDIResources
and using that as the One True Place to link Java EE's DI with CDI's DI. Many examples do something similar, but I'm not clear on whether they're "just" examples or whether that's a good way to do it.
Thanks.
java - Spring は @Inject を JSR-299 実装として Weld に置き換えることを理解できますか?
Spring 3.0 が JSR-330 の @Inject をサポートしているように見えるいくつかの Web ページから気付きました。Web アプリとスタンドアロン アプリケーションの両方のライブラリで依存性注入に JSR-299 構文を使用したいと考えており、Weld の代替手段があるため、Spring でこれができると便利です。
Spring の初心者なので、Spring Framework ディストリビューションをダウンロードして、すべての jar を Eclipse ビルド パスに配置してみました。Inject アノテーションがないため、Weld を使用した既存のテスト プロジェクトはコンパイルされませんでした。
これはSpringでできますか?実行するにはどうすればよいですか?
(最終的には Guice もこれをサポートすることを認識しています。現時点では SVN のみであり、それが可能な公式の Spring リリースがあれば、それがより良いでしょう。)
それはできます。JSR-330 jar は個別にダウンロードする必要があり、手動で記述された @Configuration クラスを解析するための cglib と、コモンズ ロギングの実装が必要です。
Weld との最大の違いは、配線を魔法のように見つけるのではなく、手動で作成する必要があることです (少し面倒ですが、より堅牢なアプリケーションを作成できる可能性があります)。さらに、起動時間がはるかに短くなります。私はまだSpringを初めて使用しています.@Configurationクラスを自動検出する方法はありますか?
java - なぜ@PostConstructを使用するのですか?
マネージドBeanでは@PostConstruct
、通常のJavaオブジェクトコンストラクターの後に呼び出されます。
@PostConstruct
通常のコンストラクター自体ではなく、Beanで初期化するために使用するのはなぜですか?
tomcat - CDI / 溶接 Web アプリケーションに便利な環境
私は溶接が初めてで、CDI (Weld) を使用する Web アプリケーションにどのような環境が役立つかを検討しています。プレゼンテーションには JSF または Wicket を使用し、永続層 (Transaction-Management を含む) には JPA/Hibernate を使用したいと考えています。明白なシナリオは、JBoss または Glassfish アプリケーション サーバーを EJB3 を取り囲むように使用することですが、Tomcat やその他の「軽量」サーブレット コンテナーを賢明な方法で使用する機会はありませんか? それとも、EJB/Seam のサラウンドなしで CDI Web アプリケーションを開発しようとするのはばかげていますか?
ユーザーエクスペリエンスに興味があります!
java - Weldで文字列定数を簡単に注入する方法は?
実行中のプログラムにマップの形式で外部構成を提供する状況があります。JSR-330 Dependency Injection は、マップを渡したり、JNDI を使用して取得したりする代わりに、コード内でその構成マップを使用するためのよりクリーンな方法を提供することを発見しました。
JSR-330 実装がこのフィールドに自動的に入力できるようにします。
Guiceを使用すると、値を設定できます
Weld でも同じことができるようにしたい (「server.username」を「foobar」などにバインドする) メカニズムはbeans.xml である可能性が最も高いことを理解していますが、単純な「このマップを Weld にフィードする」ことをお勧めします。 、してください」コードの代替。これを行うにはどうすればよいでしょうか。
@Provider
EDIT 2013-10-16: 実行時ではなくコンパイル時に動作する Dagger を調べたところ、通常、プログラムごとに 10 ~ 20 個の Dagger があるため、各構成文字列のメソッドを使用して、構成を検索することができることがわかりました。地図。これにより、メソッド固有の動作 (デフォルト値を含む)、javadoc を提供する機能、およびこれらすべてのメソッドを同じクラスに配置する機能が可能になります。また、すぐに使用できる Weld でもうまく機能します。ブログエントリでより完全な説明を書くことを検討しています。