- 浏览: 366006 次
- 性别:
- 来自: 阿里巴巴
文章分类
- 全部博客 (207)
- Maven (5)
- Cassandra (2)
- Hadoop (3)
- LDAP (2)
- SOA (7)
- 认证、加密、安全 (6)
- 搜索引擎相关技术 (3)
- REST (7)
- 数据库 (11)
- Java 基础相关 (38)
- UML (1)
- Java NIO 框架 (3)
- javassist (1)
- Bean容器 (4)
- 网络编程 (1)
- NoSQL (4)
- XML、Json (1)
- JS (2)
- Google (6)
- Warp-MVC (2)
- 持久层 (2)
- sitebricks (1)
- MVC (6)
- CSS (2)
- JPA (2)
- RDBMS (5)
- cache (4)
- tomcat (1)
- 其它 (3)
- eclipse (1)
- bigpipe (1)
- RDBMS MySQL (1)
- MySQL (2)
- ant (1)
- 前端 (2)
- Groovy (1)
- linux (3)
- Scala (1)
- zookeeper (1)
- redis (2)
- 测试 (1)
- 监控 (1)
- mac (3)
- 区块链 (3)
- 工具 (1)
最新评论
-
masuweng:
好好好,辛苦了!!
Spring Data JPA 简单介绍 -
masuweng:
Spring Data JPA 简单介绍 -
zhangjianxinjava:
您好,大神本人小白一个最近在研究不知道可否 通过邮箱进行交流, ...
JAVA Metrics度量工具 - Metrics Core -
xzs603:
http://zhengdl126.iteye.com/blo ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
JavaStart:
运行mysql2redis 的install.sh 文件为何提 ...
mysql到redis的复制
【51CTO精选译文】Java EE 6平台的发布带来了几个新的技术亮点。在前几周,我们介绍了Java EE平台的主要目标以及Java EE 6的RESTful Web Services Java API (JAX-RS)特性,本文将介绍面向Java EE平台的上下文和依赖性注入(CDI)。
JSR 299是一种为Java EE组件提供强大服务的技术,这些服务允许Java EE组件,包括EJB会话Bean和JavaServer Faces(JSF)托管的Bean,绑定到生命周期上下文,注入,并以松耦合的方式交互。最重要的也许是,CDI统一和简化了EJB和JSF编程模型,允许企业Bean替换JSF应用程序中JSF托管的Bean。
本质上,CDI是Java EE平台的Web层和企业层之间的一座桥梁,企业层通过如EJB和JPA等技术,已经对事务性资源提供了强有力的支持。例如,使用EJB和JPA(51CTO编辑推荐:EJB应用开发专栏),你可以轻松构建与数据库交互的应用程序,在数据上提交或回滚事务,以及持久化数据。相比之下,Web层重点是展示。Web技术如JSF和JSP提供用户界面,显示它的内容,没有集成处理事务资源的工具。51CTO编辑推荐您阅读《Java EE 6平台指南》专题了解更多。
通过它的服务,CDI使Web层也支持事务,这样在Web应用程序中访问事务资源就更容易了。例如,CDI使得构建一个用JPA提供的持久化访问数据库的Java EE Web应用程序就更容易了。
让我们再看看使用CDI服务的Web应用程序的关键部分,处理用户登录和注销的应用程序同时包括JSF和EJB组件。下面是一个显示登录提示JSF页面中的输入窗体代码:
1. <f:view>
2. <h:form>
3. <h:panelGrid columns="2" rendered="#{!login.loggedIn}">
4. <h:outputLabel for="username">Username:h:outputLabel>
5. <h:inputText id="username" value="#{credentials.username}"/>
6. <h:outputLabel for="password">Password:h:outputLabel>
7. <h:inputText id="password" value="#{credentials.password}"/>
8. h:panelGrid>
9. <h:commandButton value="Login" action="#{login.login}" rendered="#{!login.loggedIn}"/>
10. <h:commandButton value="Logout" action="#{login.logout}" rendered="#{login.loggedIn}"/>
11. h:form>
12. f:view>
13.
你可以从代码中看到,登录提示显示区域包括输入用户名和密码,同时还显示了一个登录按钮和退出按钮。注意统一表达式语言(EL)表达式,如# {credentials.username}和#{login.login},这些表达式引用了名叫credentials 和 login的Beans。
请注意CDI是构建在Java EE 6引入的新概念托管Beans之上的,其目的是统一Java EE 6中所有类型的Beans。一个托管Bean就是一个Java类,被视为由Java EE容器托管的组件,另外,你可以为其指定一个与EJB组件同名的命名空间,一个托管Bean也可以依赖少量的容器提供的服务,主要与生命周期管理资源注入有关,其它Java EE技术,如JSF,EJB和基于托管Bean构建的CDI,一个JSF托管Bean添加到生命周期范围,一个EJB会话Bean添加如支持事务的服务,CDI添加入依赖性注入的服务,在CDI中,一个托管Bean或一个简单的Bean是可以被其它组件,关联的上下文或通过EL表达式注入的Java EE组件。
使用javax.annotation.ManagedBean注解或CDI注解,如范围注解或限定注解,注解它的类来声明一个托管Bean,后面将会介绍范围注解和限定注解。基于注解的编程模型使得一个Bean开始是一个POJO,然后又转换成另一种Java EE组件,如EJB组件成为可能,也许要使用更高级的功能,如事务和安全注解,或由EJB容器提供的实例,例如,你可以向对象添加一个@Stateful 注解将一个POJO转换成一个状态会话,使用CDI的客户端访问Bean不受影响,因为POJO已经转换成EJB了。
这里列举的应用程序中,一个名叫Credentials的Bean有一个绑定到JSF请求的生命周期,Credentials Bean是象下面这样实现的一个JavaBean:
1. @Model
2. public class Credentials {
3.
4. private String username;
5. private String password;
6.
7. public String getUsername() { return username; }
8. public void setUsername(String username) { this.username = username; }
9.
10. public String getPassword() { return password; }
11. public void setPassword(String password) { this.password = password; }
12. }
13.
为了请求一个CDI服务,可以使用CDI注解注解一个Java EE组件,@Model注解是一个CDI注解,它将Credentials Bean作为模型-视图-控制器(MVC)架构中的模型对象,内置于CDI中的注解是一种固定模式的注解,固定模式注解将类标记为满足应用程序内的特定角色。
应用程序还包括一个Login Bean,它的生命周末是和HTTP会话绑定到一起的,Login Bean是作为一个EJB状态会话Bean实现的,代码如下:
1. @Stateful
2. @SessionScoped
3. @Model
4. public class Login {
5.
6. @Inject Credentials credentials;
7. @Inject EntityManager userDatabase;
8.
9. private User user;
10.
11. @TransactionAttribute(REQUIRES_NEW)
12. @RolesAllowed("guest")
13. public void login() {
14. ...
15. }
16.
17. public void logout() {
18. user = null;
19. }
20.
21. public boolean isLoggedIn() {
22. return user!=null;
23. }
24.
25. @RolesAllowed("user")
26. @Produces @LoggedIn User getCurrentUser() {
27. ...
28. }
29. }
30.
@Stateful注解是一个EJB注解,它指定这个Bean是一个EJB状态会话Bean,@TransactionAttribute 和@RolesAllowed也是EJB注解,它们声明EJB事务划分和注解方法的安全属性。
@SessionScoped注解是一个CDI注解,它给Bean指定一个范围,所有的Bean都有一个范围确定其实例的生命周期和这个实例对其它 Bean的实例是否可见,这是一个很重要的特性,因为EJB组件没有定义良好的范围,尤其是EJB组件不能感知请求,会话和应用程序Web层组件,如 JSF托管Bean的上下文,也不能访问与这些上下文关联的状态。此外,状态EJB组件的生命周期不能作用到Web层上下文。
相比之下,CDI中的作用域对象有一个定义良好的由Java EE容器托管的生命周期上下文,作用域对象可能是按需自动创建的,当上下文创建完毕后又自动销毁的,值得注意的是,作用域状态在相同上下文中执行的客户端之间是自动共享的,这意味着客户端,如其它在相同上下文中执行的Beans,会被当作相同的对象实例看待,但在不同上下文中的客户端看到的是不同的实例。 @SessionScoped注解指定Login Bean的作用域类型是会话作用域。对象通常不会与作用域关联,一般依赖于它们的所有者,这些依赖对象的生命周期是和它们的所有者联系在一起的,一个依赖对象当它的所有者被销毁后它也自动销毁。
Beans通常通过依赖性注入引用其它Beans,依赖性注入机制是一个完全的类型安全,CDI使用JSR 330-Java依赖性注入中指定的注解进行依赖性注入,@Inject就是其中一个注解,它指出Java类或接口上哪个依赖点可以被注入,容器然后提供需要的资源,在这个例子中,Login Bean指定了两个注入点,第一个使用@Inject注解在Credentials Bean上注入一个依赖,容器将会把Credentials Bean注入到这个上下文中创建的所有Login实例上,第二个@Inject注解在JPA EntityManager上注入一个依赖,容器将会注入EntityManager管理持久化上下文。
@Produces注解将getCurrentUser()方法认为是一个生产者方法,每当系统中的另一个Bean需要指定类型的注入对象时就会调用生产者方法,在这个例子中,注入对象是当前登录的用户,它是通过限定注解@LoggedIn注入的,为了使用限定注解,你首先需要将它的类型定义为一个限定器,再使用@Qualifier注解,如:
1. @Target( { TYPE, METHOD, PARAMETER, FIELD })
2. @Retention(RUNTIME)
3. @Documented
4. @Qualifier
5. public @interface LoggedIn {...}
6.
* Java EE 6新特性尝鲜:EJB 3.1重要变化..
* Java EE 6,貌似民主下的虚伪公平
* Sun的技术爆发 Java EE 6等三重量级产品..
* Java EE 6总览:平台的主要目标
* Java EE 6引入的三大新技术之JAX-RS
让我们再回到前面讨论的登录提示,当用户响应提示并点击了提交按钮后,CDI技术开始付诸行动,Java EE容器(51CTO编辑推荐:Java EE容器调查:Tomcat大受欢迎 WebLogic成时间杀手)自动实例化Credentials Bean和Login bean的一个上下文实例,一个绑定上下文的Bean的实例叫做上下文实例,JSF指定输入给Credentials Bean上下文实例的用户名和密码,接下来JSF调用Login上下文实例中的login()方法。这个实例对于相同HTTP会话中的其它请求继续存在并可继续使用,并为其它请求它的Bean提供表示当前用户的User对象。
这个例子只说明了这个技术的一部分功能,其它功能如可以让Bean产生或消费事件,定义截取者跨所有Bean类型绑定额外的功能,或者定义装饰者在指定Bean类型上应用额外的功能。
JSR 299是一种为Java EE组件提供强大服务的技术,这些服务允许Java EE组件,包括EJB会话Bean和JavaServer Faces(JSF)托管的Bean,绑定到生命周期上下文,注入,并以松耦合的方式交互。最重要的也许是,CDI统一和简化了EJB和JSF编程模型,允许企业Bean替换JSF应用程序中JSF托管的Bean。
本质上,CDI是Java EE平台的Web层和企业层之间的一座桥梁,企业层通过如EJB和JPA等技术,已经对事务性资源提供了强有力的支持。例如,使用EJB和JPA(51CTO编辑推荐:EJB应用开发专栏),你可以轻松构建与数据库交互的应用程序,在数据上提交或回滚事务,以及持久化数据。相比之下,Web层重点是展示。Web技术如JSF和JSP提供用户界面,显示它的内容,没有集成处理事务资源的工具。51CTO编辑推荐您阅读《Java EE 6平台指南》专题了解更多。
通过它的服务,CDI使Web层也支持事务,这样在Web应用程序中访问事务资源就更容易了。例如,CDI使得构建一个用JPA提供的持久化访问数据库的Java EE Web应用程序就更容易了。
让我们再看看使用CDI服务的Web应用程序的关键部分,处理用户登录和注销的应用程序同时包括JSF和EJB组件。下面是一个显示登录提示JSF页面中的输入窗体代码:
1. <f:view>
2. <h:form>
3. <h:panelGrid columns="2" rendered="#{!login.loggedIn}">
4. <h:outputLabel for="username">Username:h:outputLabel>
5. <h:inputText id="username" value="#{credentials.username}"/>
6. <h:outputLabel for="password">Password:h:outputLabel>
7. <h:inputText id="password" value="#{credentials.password}"/>
8. h:panelGrid>
9. <h:commandButton value="Login" action="#{login.login}" rendered="#{!login.loggedIn}"/>
10. <h:commandButton value="Logout" action="#{login.logout}" rendered="#{login.loggedIn}"/>
11. h:form>
12. f:view>
13.
你可以从代码中看到,登录提示显示区域包括输入用户名和密码,同时还显示了一个登录按钮和退出按钮。注意统一表达式语言(EL)表达式,如# {credentials.username}和#{login.login},这些表达式引用了名叫credentials 和 login的Beans。
请注意CDI是构建在Java EE 6引入的新概念托管Beans之上的,其目的是统一Java EE 6中所有类型的Beans。一个托管Bean就是一个Java类,被视为由Java EE容器托管的组件,另外,你可以为其指定一个与EJB组件同名的命名空间,一个托管Bean也可以依赖少量的容器提供的服务,主要与生命周期管理资源注入有关,其它Java EE技术,如JSF,EJB和基于托管Bean构建的CDI,一个JSF托管Bean添加到生命周期范围,一个EJB会话Bean添加如支持事务的服务,CDI添加入依赖性注入的服务,在CDI中,一个托管Bean或一个简单的Bean是可以被其它组件,关联的上下文或通过EL表达式注入的Java EE组件。
使用javax.annotation.ManagedBean注解或CDI注解,如范围注解或限定注解,注解它的类来声明一个托管Bean,后面将会介绍范围注解和限定注解。基于注解的编程模型使得一个Bean开始是一个POJO,然后又转换成另一种Java EE组件,如EJB组件成为可能,也许要使用更高级的功能,如事务和安全注解,或由EJB容器提供的实例,例如,你可以向对象添加一个@Stateful 注解将一个POJO转换成一个状态会话,使用CDI的客户端访问Bean不受影响,因为POJO已经转换成EJB了。
这里列举的应用程序中,一个名叫Credentials的Bean有一个绑定到JSF请求的生命周期,Credentials Bean是象下面这样实现的一个JavaBean:
1. @Model
2. public class Credentials {
3.
4. private String username;
5. private String password;
6.
7. public String getUsername() { return username; }
8. public void setUsername(String username) { this.username = username; }
9.
10. public String getPassword() { return password; }
11. public void setPassword(String password) { this.password = password; }
12. }
13.
为了请求一个CDI服务,可以使用CDI注解注解一个Java EE组件,@Model注解是一个CDI注解,它将Credentials Bean作为模型-视图-控制器(MVC)架构中的模型对象,内置于CDI中的注解是一种固定模式的注解,固定模式注解将类标记为满足应用程序内的特定角色。
应用程序还包括一个Login Bean,它的生命周末是和HTTP会话绑定到一起的,Login Bean是作为一个EJB状态会话Bean实现的,代码如下:
1. @Stateful
2. @SessionScoped
3. @Model
4. public class Login {
5.
6. @Inject Credentials credentials;
7. @Inject EntityManager userDatabase;
8.
9. private User user;
10.
11. @TransactionAttribute(REQUIRES_NEW)
12. @RolesAllowed("guest")
13. public void login() {
14. ...
15. }
16.
17. public void logout() {
18. user = null;
19. }
20.
21. public boolean isLoggedIn() {
22. return user!=null;
23. }
24.
25. @RolesAllowed("user")
26. @Produces @LoggedIn User getCurrentUser() {
27. ...
28. }
29. }
30.
@Stateful注解是一个EJB注解,它指定这个Bean是一个EJB状态会话Bean,@TransactionAttribute 和@RolesAllowed也是EJB注解,它们声明EJB事务划分和注解方法的安全属性。
@SessionScoped注解是一个CDI注解,它给Bean指定一个范围,所有的Bean都有一个范围确定其实例的生命周期和这个实例对其它 Bean的实例是否可见,这是一个很重要的特性,因为EJB组件没有定义良好的范围,尤其是EJB组件不能感知请求,会话和应用程序Web层组件,如 JSF托管Bean的上下文,也不能访问与这些上下文关联的状态。此外,状态EJB组件的生命周期不能作用到Web层上下文。
相比之下,CDI中的作用域对象有一个定义良好的由Java EE容器托管的生命周期上下文,作用域对象可能是按需自动创建的,当上下文创建完毕后又自动销毁的,值得注意的是,作用域状态在相同上下文中执行的客户端之间是自动共享的,这意味着客户端,如其它在相同上下文中执行的Beans,会被当作相同的对象实例看待,但在不同上下文中的客户端看到的是不同的实例。 @SessionScoped注解指定Login Bean的作用域类型是会话作用域。对象通常不会与作用域关联,一般依赖于它们的所有者,这些依赖对象的生命周期是和它们的所有者联系在一起的,一个依赖对象当它的所有者被销毁后它也自动销毁。
Beans通常通过依赖性注入引用其它Beans,依赖性注入机制是一个完全的类型安全,CDI使用JSR 330-Java依赖性注入中指定的注解进行依赖性注入,@Inject就是其中一个注解,它指出Java类或接口上哪个依赖点可以被注入,容器然后提供需要的资源,在这个例子中,Login Bean指定了两个注入点,第一个使用@Inject注解在Credentials Bean上注入一个依赖,容器将会把Credentials Bean注入到这个上下文中创建的所有Login实例上,第二个@Inject注解在JPA EntityManager上注入一个依赖,容器将会注入EntityManager管理持久化上下文。
@Produces注解将getCurrentUser()方法认为是一个生产者方法,每当系统中的另一个Bean需要指定类型的注入对象时就会调用生产者方法,在这个例子中,注入对象是当前登录的用户,它是通过限定注解@LoggedIn注入的,为了使用限定注解,你首先需要将它的类型定义为一个限定器,再使用@Qualifier注解,如:
1. @Target( { TYPE, METHOD, PARAMETER, FIELD })
2. @Retention(RUNTIME)
3. @Documented
4. @Qualifier
5. public @interface LoggedIn {...}
6.
* Java EE 6新特性尝鲜:EJB 3.1重要变化..
* Java EE 6,貌似民主下的虚伪公平
* Sun的技术爆发 Java EE 6等三重量级产品..
* Java EE 6总览:平台的主要目标
* Java EE 6引入的三大新技术之JAX-RS
让我们再回到前面讨论的登录提示,当用户响应提示并点击了提交按钮后,CDI技术开始付诸行动,Java EE容器(51CTO编辑推荐:Java EE容器调查:Tomcat大受欢迎 WebLogic成时间杀手)自动实例化Credentials Bean和Login bean的一个上下文实例,一个绑定上下文的Bean的实例叫做上下文实例,JSF指定输入给Credentials Bean上下文实例的用户名和密码,接下来JSF调用Login上下文实例中的login()方法。这个实例对于相同HTTP会话中的其它请求继续存在并可继续使用,并为其它请求它的Bean提供表示当前用户的User对象。
这个例子只说明了这个技术的一部分功能,其它功能如可以让Bean产生或消费事件,定义截取者跨所有Bean类型绑定额外的功能,或者定义装饰者在指定Bean类型上应用额外的功能。
发表评论
-
浮点数计算
2020-08-25 16:15 323@Test public void test2() ... -
AQS、ReentrantLock、CLH锁 、MCS锁 分析
2018-12-25 23:45 6781. ReentrantLock的介绍 Reentran ... -
Java并发编程:CountDownLatch、CyclicBarrier、Semaphore、Phaser
2015-02-26 16:41 1369在java 1.5中,提供了 ... -
技术网站资料
2014-07-17 11:53 0http://javakaiyuan.com ht ... -
Java之死-前言
2014-07-15 10:14 751用了好多年的java之后越来越感觉其并不像 ... -
通过JVM获取相关的服务器信息 .
2013-01-07 20:18 2169http://blog.csdn.net/zgmzyr/art ... -
Java中使用OpenSSL生成的RSA公私钥进行数据加解密
2012-10-25 11:34 4376openssl genrsa -out rsa_pr ... -
java开源
2012-05-29 14:34 1492开源不是开放编译器的源代码,而是写了一个软 ... -
用Ant打Jar包--在Manifest中引用Classpath
2012-03-15 13:20 1590用Ant打Jar包--在Manifest ... -
分布式锁服务器
2011-11-07 22:14 1949在分布式系统中如何 ... -
Java 7 Fork/Join 并行计算框架概览
2011-11-05 16:26 1072http://www.iteye.com/topic/ ... -
Apache Jakarta Commons 工具集简介
2011-11-03 11:22 1589org.apache.commons.collectio ... -
JDBC batch批处理Statement executeBatch 详解
2011-09-28 13:25 2745http://blog.csdn.net/basene ... -
代码动态生成利器ASM
2011-09-22 20:02 1056前言 代码生成器(code generato ... -
Fastjson技术内幕
2011-09-13 23:51 1341文章来源:http://code.alibabatech.co ... -
基于Spring可扩展Schema提供自定义配置支持
2011-08-07 16:01 1232在很多情况下,我们需要为系统提供可配置化支持,简单的做法可以直 ... -
Mule 与 Spring2.0's extensible XML configuration mechanism
2011-08-07 15:50 1361mule2.2.1已经采用从sprin ... -
alibaba fastjson(json序列化器)序列化部分源码解析
2011-08-03 21:11 2016本文copy自http://www.flydmeng.co ... -
JVM 远程调试 参数
2011-07-28 09:49 1886远程调试 参数 -server -Xdebug -Xnoag ... -
Sequential Lock in Java
2011-07-03 16:22 14021 Overview Linux内核中常见的同步机制 ...
相关推荐
《Pro CDI 2 in Java EE 8》这本书深入探讨了Java企业版8中的Contexts and Dependency Injection(CDI)2.0规范,它是Java应用中管理组件和服务的核心技术之一。CDI允许开发者以声明式的方式管理对象的生命周期和...
在IT行业中,CDI(Contexts and Dependency Injection)和JSF(JavaServer Faces)是Java EE 6框架中的核心组件,而Weld是CDI的一个实现。这些技术为开发高效、可维护的Web应用程序提供了强大的支持。让我们深入探讨...
6. **CDI(Contexts and Dependency Injection)**:CDI是Java EE 6引入的一个重要组件,提供了依赖注入和上下文管理功能。通过CDI,开发者可以更轻松地管理对象的生命周期和依赖关系,降低了代码的耦合度。 7. **...
1. **简化开发**:Java EE 6引入了简化API,如JSR 315 CDI(Contexts and Dependency Injection),使得依赖注入和上下文管理更加简单直观,减少了XML配置的复杂性。 2. **Web Profile**:这是Java EE 6的一个重要...
CDI是Java EE 6中的核心组件管理框架,提供依赖注入(DI)和上下文管理,允许开发者声明性地管理对象的生命周期和依赖关系,极大地提高了代码的可测试性和可维护性。 3. **EJB 3.1**: EJB(Enterprise JavaBeans...
8. **Contexts and Dependency Injection (CDI) 1.0**:CDI是Java EE 6中的依赖注入和上下文管理规范,使得组件间的依赖关系更加清晰,提高了代码的可测试性和可维护性。 9. **Java API for RESTful Web Services ...
2. **Managed Beans (JSR 330)**:通过JSR 330规范,Java EE 6引入了依赖注入(Dependency Injection)的标准实现,比如@ManagedBean和@Inject,使得组件间的依赖关系更加清晰。 3. **Contexts and Dependency ...
Contexts and Dependency Injection (CDI) 是Java EE中的一个核心规范,提供了依赖注入和上下文管理功能,使得组件之间的关系更加松耦合,易于测试和维护。 8. **WebSocket** Java EE 7引入了WebSocket API,允许...
5. **CDI 1.0 (Contexts and Dependency Injection)**:CDI为Java EE应用提供了依赖注入和上下文管理,允许开发者轻松地注入依赖对象,同时支持事件、拦截器和可选绑定。 6. **JAX-RS 1.1 (Java API for RESTful ...
4. **CDI (Contexts and Dependency Injection)**:CDI为Java EE应用提供依赖注入和上下文管理,使得组件之间的依赖关系更加清晰,提高了代码的可测试性和可维护性。 5. **EJB (Enterprise JavaBeans)**:EJB是Java...
《Contexts and Dependency Injection for Java 2.0》(CDI 2.0)是Java开发中的一个核心规范,它提供了上下文管理和依赖注入的功能,旨在简化企业级应用的复杂性,提高代码的可测试性和可维护性。该规范由Antoine ...
2. **依赖注入(Dependency Injection,DI)**:通过JSR 330(依赖注入规范)和JSR 299(上下文和依赖注入,CDI),Java EE 6强化了依赖注入,使得对象之间的关系更加清晰,降低了耦合度,提高了代码的可测试性。...
5. **CDI 1.0**:Contexts and Dependency Injection (CDI)是Java EE 6中的新成员,它为依赖注入提供了一种统一标准,不仅限于EJB,也适用于其他组件。CDI通过`@Inject`注解实现依赖注入,支持上下文管理和事件处理...
3. **上下文和依赖注入(Contexts and Dependency Injection, CDI)**:JSR 299规范定义了CDI,它是Java EE 6中一个重要的组件管理框架,提供依赖注入、事件、拦截器和可替代的实现等功能。 4. **简化Servlet**:...
6. **CDI(Contexts and Dependency Injection)**:CDI是Java EE中的依赖注入和上下文管理规范,使得对象的创建和管理更加自动化,提高了代码的可测试性和可维护性。 在源代码第三章中,你可能通过实际的案例研究...
Java EE 7是在2013年推出的Java企业级计算平台的标准版本,它在Java EE 6的基础上做了大量的增强和改进,以适应现代云计算和大数据处理的需求。 首先,Java EE 7为开发者提供了更加模块化和轻量级的开发方式。平台...
9. **CDI(Contexts and Dependency Injection)**:提供依赖注入和上下文管理,简化了对象之间的依赖关系。 10. **JAX-RS(Java API for RESTful Web Services)**:用于构建RESTful服务,基于HTTP协议,使得服务...
- **Contexts and Dependency Injection (CDI)**:提供了上下文管理和依赖注入机制,使开发者能够更轻松地管理组件之间的依赖关系。 #### 三、新增特性 第四版特别强调了以下Java EE 6的新特性和改进: 1. **约定...