タグ

ブックマーク / tanoseam.wordpress.com (5)

  • CDI, 私を愛したSPI

    この記事はCDI 2.0スペックリードであるAntoine Sabot-Durand氏の記事(Feb 20, 2017)の翻訳です。CDI SPIの概要をサンプルやCDI 1.1の新機能の紹介を交えて説明しています。私はプロデューサーにパラメーターを渡すために限定子を使う方法や、InjectionPointメタデータを使って実装を切り替える方法が面白いと思いました。ちなみに、この記事のタイトルは「007 私を愛したスパイ」をもじっています(この著者の他の記事も同様です)。 (原文)CDI, the SPI who loved me CDIユーザーは何度も私に尋ねます。なぜCDIを採用して、古いフレームワークや開発のやり方を止めるべきなのかを。この質問への答えは先進的なCDIの要素、すなわち拡張機能とCDI SPIに見い出せます。 そう、CDIの当に優れた機能は最初から使えるものではなく、

    CDI, 私を愛したSPI
  • まさかの時のCDIポータブル・エクステンション

    この記事はCDI 2.0スペックリードであるAntoine Sabot-Durand氏の記事(Feb 6, 2017)の翻訳です。CDIコンテナーのライフサイクルとイベントについてフローチャートを使って内部動作をわかりやすく説明しています。エクステンションについてこれだけ詳細に解説した記事は他にはないと思います。 (原文)Nobody expects the CDI portable extensions ポータブル・エクステンションはCDIの中でおそらく最もクールな機能です。 残念なことに、この貴重な機能は仕様書の隠れたところにあって、それにまったく気づかない開発者がいますし、エクステンションを使うのは複雑過ぎると考える人もいます。 この記事では、誰でも自分の仕事で簡単な機能や先進的なインテグレーション機能を提供するためにエクステンションを使えるということを示します。 でも、まず最初に「

    まさかの時のCDIポータブル・エクステンション
  • 異なる種類のBeanを認識する方法

    この記事はCDI 2.0スペックリードであるAntoine Sabot-Durand氏の記事(Dec 14, 2015)の翻訳です。前半ではBeanとBeanインスタンスの違いや、タイプレゾリューションアルゴリズム、後半では各種CDI Beanの特徴について説明しています。仕様書を噛み砕いて説明している良い記事だと思いますので紹介します。 (原文)How to recognize different types of beans from quite a long way away CDIにおいてはBeanはまさに中心的な概念です。でも、多くのユーザーにとっては、この概念は曖昧なままで、期待される結果を得るには実験が必要になります。この記事では、Bean関連の概念とBean定義とインジェクションの背後にある隠された詳細を明らかにします。 Bean,コンテキスト依存インスタンス、タイプセーフ

    異なる種類のBeanを認識する方法
  • CDIによるプロパティのインジェクション

    アプリケーションの設定情報をソースコード中にハードコードするのではなく、プロパティファイルに記述しておいて後から変更できるようにしたい場合があります。このプロパティの値をCDIらしくインジェクションで取得する方法としてProducerを使う方法があります。こうやって手作りするのは良いのですが、複数の変数の型に対応させたり、拡張可能にしたりと機能を盛り込んでいくと手間がかかります。今回はこのような機能を提供するDeltaSpike Configurationについて紹介します。 DeltaSpike Configurationとは DeltaSpike Configurationはプロパティから構成情報を取得するための機能でCoreモジュールに含まれます。アプリケーションからこれを使うのは簡単です。変数のインジェクション時に@ConigurePropertyというアノテーションを指定すると、

    CDIによるプロパティのインジェクション
  • アノテーションを指定したBeanの検索方法

    前回のブログでBeanManagerを紹介しましたが、AnnotationLiteralの使い方の説明が足りなかったと思いますので補足します。 AnnotationLiteralを使うとアノテーションを「もの」として扱える BeanManagerの使用例として取り上げたBeanManager:: getBeans(Type beanType, Annotation… qualifiers) はメソッド引数として限定子(Qualifier)アノテーションを要求しています。しかし、使用例ではこのメソッド引数としてAnnotationLiteralのインスタンスが指定されていました。 Set<Bean<?>> beans = beanManager.getBeans(Object.class, new AnnotationLiteral<Any>(){}); Annotationはもともとインタ

    アノテーションを指定したBeanの検索方法
  • 1