JBossシリーズ70:簡単なCDI Webアプリケーション
概要
本論文では,dependency injection,scope,qualifiersおよびEL統合を簡単なCDI Webアプリケーションにより実証した.アプリケーションの導入が完了したら、http://localhost:8080/moodcheckerWebアプリケーションのウェルカムページにアクセスすると、moodはgoodとbadの間で変化し続けます.本稿ではhow qualifiers influence the selection of an injectorを理解することができる.
コンパイル配置テストアプリケーションこのアプリケーションのソースコードはhttps://github.com/kylinsoong/webframework/tree/master/cdi/moodchecker.
ソフトウェアのインストールと資料のダウンロードで説明した方法でダウンロードし、配置パッケージcdi-moodcheckerをコンパイルして生成することができます.warは、JBoss 7/WildFlyで説明する方法に適用するcdi-moodcheckerを4つの方法で配備する.warからJBossノードへ.アプリケーション配備完了起動JBoss 7は以下の通りである.
アプリケーションの導入が完了したら、http://localhost:8080/moodcheckerアクセス、Webページは次のように表示されます.
サンプル分析
例に含まれるプロファイルまたはjavaクラスは、次のとおりです. beans.xml faces-config.xml index.xhtml web.xml jboss-web.xml org.jboss.demo.cdi.moodchecker.Mood org.jboss.demo.cdi.moodchecker.BadMood org.jboss.demo.cdi.moodchecker.GoodMood org.jboss.demo.cdi.moodchecker.MoodChecker
Mood
Mood類の内容は以下の通りである.
注意:@Nameおよび@RequestScopedタグクラス自体、MoodCheckerプロパティは@Injectおよび@Good注入を使用します.
Qualifiers
前のGoodはGoodMoodを注入するためにカスタマイズされた寸法であることに注意してください.ここでは2つの寸法、GoodとBadを作成しました.以下のようにします.
我々は
GoodにはGoodMoodと表示され、以下のように表示されます.
こうして
Moodに@Goodタグを使用するとGoodMoodが注入されます.
EL統合
index.xhtmlはEL式を使用してバックグラウンドBean Moodと直接対話し、index.xhtmlの内容は次のとおりです.
本論文では,dependency injection,scope,qualifiersおよびEL統合を簡単なCDI Webアプリケーションにより実証した.アプリケーションの導入が完了したら、http://localhost:8080/moodcheckerWebアプリケーションのウェルカムページにアクセスすると、moodはgoodとbadの間で変化し続けます.本稿ではhow qualifiers influence the selection of an injectorを理解することができる.
コンパイル配置テストアプリケーションこのアプリケーションのソースコードはhttps://github.com/kylinsoong/webframework/tree/master/cdi/moodchecker.
ソフトウェアのインストールと資料のダウンロードで説明した方法でダウンロードし、配置パッケージcdi-moodcheckerをコンパイルして生成することができます.warは、JBoss 7/WildFlyで説明する方法に適用するcdi-moodcheckerを4つの方法で配備する.warからJBossノードへ.アプリケーション配備完了起動JBoss 7は以下の通りである.
./standalone.sh
アプリケーションの導入が完了したら、http://localhost:8080/moodcheckerアクセス、Webページは次のように表示されます.
サンプル分析
例に含まれるプロファイルまたはjavaクラスは、次のとおりです.
Mood
Mood類の内容は以下の通りである.
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;
@Named
@RequestScoped
public class Mood {
private String mood;
@Inject
@Good
private MoodChecker moodChecker;
public Mood() {
}
public void check() {
mood = moodChecker.checkMood();
}
public String getMood() {
return mood;
}
}
注意:@Nameおよび@RequestScopedタグクラス自体、MoodCheckerプロパティは@Injectおよび@Good注入を使用します.
Qualifiers
前のGoodはGoodMoodを注入するためにカスタマイズされた寸法であることに注意してください.ここでは2つの寸法、GoodとBadを作成しました.以下のようにします.
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import javax.inject.Qualifier;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Qualifier
@Target({ TYPE, METHOD, PARAMETER, FIELD })
@Retention(RUNTIME)
@Documented
public @interface Good {
}
我々は
GoodにはGoodMoodと表示され、以下のように表示されます.
@Good
public class GoodMood implements MoodChecker {
public String checkMood() {
return "I feel great !";
}
}
こうして
Moodに@Goodタグを使用するとGoodMoodが注入されます.
EL統合
index.xhtmlはEL式を使用してバックグラウンドBean Moodと直接対話し、index.xhtmlの内容は次のとおりです.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>How Are You Today?</title>
</h:head>
<h:body>
<h3>How Are You?</h3>
<h:form>
<p>
<h:commandButton value="Check Mood" action="#{mood.check}" />
</p>
<p>
<h:outputText value="#{mood.mood}" />
</p>
</h:form>
</h:body>
</html>