Qualifierを自作する場合は命名もしくはパッケージでそれがQualifierであることを分かるようにしたほうがいい。 #JavaDayTokyo #jdt22
2015-04-08 14:34:47Duchess だと?! Dukeの女の子版 #JavaDayTokyo #jdt22 pic.twitter.com/PYbyFkoaAa
2015-04-08 14:35:16切り分けたいときは、そうなんだけど、実際は、後でどっちか選択したいって言うケースの方が多い(?)と思うんだけど、そっちの紹介はないのかしら。 #jdt22
2015-04-08 14:35:37インジェクトポイントはfinalにはできない。じゃあインジェクト対象をイミュータブルにするには? コンストラクタ経由でインジェクションする。 #JavaDayTokyo #jdt22
2015-04-08 14:37:25インジェクションポイントでNamedアノテーションを使うのは推奨されない。名前レベルでDIの解決をするのはコンパイルやデプロイは成功するけど実際に動作させた時にエラーになる可能性があるので推奨してないと。 #JavaDayTokyo #jdt22
2015-04-08 14:40:37EE7からはデフォルトでCDIが有効に。ただCDIと認識されるものしかインジェクトできないようになった。bean-discovery-mode="all"にすれば可能だけど、コンテナ起動時に全クラスのスキャンが発生するので止めようと。 #JavaDayTokyo #jdt22
2015-04-08 14:42:48インジェクトできるのは、NormalScopeアノテーションを継承した全スコープ、その他Dependent、Interceptor、Decorator、Stereotypeアノテーションが設定されたもの。 #JavaDayTokyo #jdt22
2015-04-08 14:43:58CDIのManagement Beanは実体のクラスをインスタンス化したものではなくCDIコンテナがコンテキスト情報を付加したProxyのインスタンスとして生成する。 #JavaDayTokyo #jdt22
2015-04-08 14:45:58EE環境ではSingletonは使わない。Management Beanにはならないので、ApplicationScopedを使うこと。 これは以前ハマったなー。 #JavaDayTokyo #jdt22
2015-04-08 14:48:16同じServiceに複数のバージョンを持たせたい場合、EE環境ではAlernativeアノテーションを付加して実現可能。どちらを採用するのかは、beans.xmlで選択したい実装を選ぶかPriorityアノテーションで指定する。 #JavaDayTokyo #jdt22
2015-04-08 14:51:42ただ、Qualifierが付いてるクラスはAlternativeが有効にならない。 #JavaDayTokyo #jdt22
2015-04-08 14:52:05Stereotypeアノテーションで複数のアノテーションをセット作って、それを適用することができる。冗長的なアノテーションを各クラスに1つずつ書かなくて済む。 ただアノテーション地獄を避けるためにアノテーションのメタ化が進んでる気はする。 #JavaDayTokyo #jdt22
2015-04-08 14:57:31