JEE6

JEE6 CDI(Contexts and Dependency Injection)介绍

半世苍凉 提交于 2020-03-11 13:22:45
Java EE 6已经发布了很久,不过国内使用的人依旧很少,资料也很缺乏。我自己本人很看好JEE6,觉得 JSR299- Contexts and Dependency Injection 很好很强大。CDI 也就是上下文依赖注入,概念和 Spring 中的 依赖注入(DI) 一样。在JEE6中被作为一个规范后,我们使用起来就更加的方便实用了。 CDI最给力的一点就是提供了一个 Extension 接口, 允许我们对CDI进行扩展。我们可以通过实现这个接口来做实现很多非常酷的功能。包括对 Bean 的注入前后的拦截,Bean执行构造方法前后的拦截等等。通过这些我们就可以实现事务,日志等等一些功能。 目前实现 JSR-299 CDI 规范的框架有三个: JBoss Weld , Apache OpenWebBeans 和 Caucho CanDI 。 JSR-299 CDI 是 Gavin King 领导制定的,Weld 的实现也基本是由 JBoss的人员完成,所以JBoss社区比较活跃。 CDI 作为一个依赖注入的规范,它的主要的优点有下面几点: 类型安全:CDI不在通过字符串名称来注入对象,而是java类型来确定被注入的对象。当单单通过java类型还不能确定到底哪一个对象被注入的时候,你可以通过扩展 @ Qualifier 注解来限定你需要注入的对象 。 普通的Java Bean

JEE6 CDI 扩展实现 MVC (一)

自作多情 提交于 2020-03-11 13:16:19
就目前来说,CDI 基本还是和 JSF 结合使用的比较多,CDI 的扩展能力非常的出色,Seam3 就是完全基于 weld 的。当然我们也可以扩展 CDI 实现和 Spring MVC, .Net MVC 差不多的功能结合 JSP 一起使用。这里我是看到了老外的这篇 文章 ,然后对其已经实现的MVC功能做了一些扩展,添加了页面像 Controller 传值的功能,后面我还准备尝试添加表单实体的提交,还有 Controller 返回 JSon,Freemarker 等一些功能,这些功能都是借鉴于 RestEasy 。 对于MVC,我就不去介绍了,网上有很多。 添加 MVC 注解 JDK5 以后新增了自定义注解的功能,我们先为MVC添加好需要的一些注解,在 CDI 中的限定词都是通过扩展注解来做的。基本取消了配置文件用注解来代替,Spring 3 MVC 也是。下面是目前我们使用到的几个注解。 添加 @Controller 注解,这个注解表示这个类为 MVC 中的 Controller。 @Target({ ElementType.TYPE,ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface Controller { } 添加 @RequestMapping 注解,它有两个参数

JEE6 CDI 扩展实现 MVC (三) 支持返回String,JSon,Freemarker

无人久伴 提交于 2020-03-11 13:15:19
前面我们实现了 MVC 的最基本的功能,视图跳转以及基本数据的传递。这部分我们对 Controller 的返回值进行扩展,支持返回 字符串, JSon 以及 对Freemarker模板引擎的支持。 添加注解 @ ResponseBody 当Controller的方法 ResponseBody 注解的时候说明放回的值既是为 String 的话,也不是跳转到View。它的 value 为 ResponseType 枚举,用来表示 Response 返回内容的类型。 @ResponseTemplate 表示Controller方法返回时调用模板引擎来返回静态页面。他的value的值为模板页面的路径,type值表示为哪一种模板引擎。 当然,为了方便处理,一个Controller 方法不能同时拥有 这两个注解。 @Target({ ElementType.TYPE,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface ResponseBody { ResponseType value(); } @Qualifier @Target({ElementType.METHOD,ElementType.TYPE,ElementType.FIELD}) @Retention(RetentionPolicy