热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JBoss系列七十:一个简单的CDIWeb应用

概述本文通过一个简单的CDIWeb应用演示dependencyinjection,scope,qualifiers以及EL整合。应用部署完成后我们可以通过http:localhos

概述

本文通过一个简单的 CDI Web 应用演示dependency injection, scope, qualifiers 以及EL整合。应用部署完成后我们可以通过http://localhost:8080/moodchecker 来访问Web 应用欢迎页面,Mood在good和bad之间不停变化。通过本文,我们可以明白how qualifiers influence the selection of an injector。

 

编译部署测试应用

本应用源代码位于 https://github.com/kylinsoong/webframework/tree/master/cdi/moodchecker。

 

我们可以使用软件安装及资料下载中描述的方法下载,编译生成部署包cdi-moodchecker.war,使用使用4种方式部署应用到JBoss7/WildFly中描述的方法部署cdi-moodchecker.war到JBoss节点。应用部署完成启动JBoss 7如下:

 

./standalone.sh

 

 

应用部署完成后我们可以通过  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类内容如下:

 

import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;@Named
@RequestScoped
public class Mood {private String mood;@Inject@Goodprivate MoodChecker moodChecker;public Mood() {}public void check() {mood = moodChecker.checkMood();}public String getMood() {return mood;}
}


注意:@Named 和 @RequestScoped标注类本身,MoodChecker属性使用@Inject和@Good注入。

 

Qualifiers

注意前面Good是我们自定义的标注,用来注入GoodMood,我们这里创建了两个标注,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内容如下:

 




How Are You?




 



 

转:https://www.cnblogs.com/riasky/p/3481858.html



推荐阅读
author-avatar
手机用户2602930681
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有