我和你99谁做的网站,网站最下面版权模板,asp做网站搜索,韩国做美食网站有哪些Java EE平台的上下文和依赖注入#xff08;CDI#xff09;是一项功能#xff0c;可帮助将Java EE平台的Web层和事务层绑定在一起。 CDI是一组服务#xff0c;可以一起使用#xff0c;使开发人员可以轻松地在Web应用程序中使用企业bean和JavaServer Faces技术。 在CDI中CDI是一项功能可帮助将Java EE平台的Web层和事务层绑定在一起。 CDI是一组服务可以一起使用使开发人员可以轻松地在Web应用程序中使用企业bean和JavaServer Faces技术。 在CDI中bean是定义应用程序状态和/或逻辑的上下文对象的源。 如果容器可以根据CDI规范中定义的生命周期上下文模型来管理其实例的生命周期则Java EE组件就是Bean。 托管bean由Java类称为其bean类实现。 如果任何其他Java EE技术规范例如JavaServer Faces技术规范将顶级Java类定义为托管bean则该顶级Java类为托管bean。 当我们需要使用在Web应用程序中注入另一个bean类的bean时该bean需要能够在用户与应用程序交互期间保持状态。 定义此状态的方法是给Bean一个范围。 范围为对象提供了明确定义的生命周期上下文。 有作用域的对象可以在需要时自动创建并在创建对象的上下文结束时自动销毁。 而且其状态将由在相同上下文中执行的所有客户端自动共享。 当我们创建一个作为托管bean的Java EE组件时它将成为一个有范围的对象该对象存在于定义良好的生命周期上下文中。 下表提供了CDI提供的范围 1.请求– RequestScoped 该范围描述了单个HTTP请求中用户与Web应用程序的交互。 RequestScoped注释的bean的实例具有HTTP请求生命周期。 2.会话– SessionScoped 此作用域表示跨多个HTTP请求的用户与Web应用程序的交互。 3.应用程序– ApplicationScoped 在这种情况下状态在所有用户与Web应用程序的交互中共享。 容器为所有客户端请求提供了ApplicationScoped注释的Bean的相同实例。 4.对话– ConversationScoped 此范围描述了用户与JavaServer Faces应用程序之间的交互作用该交互作用在显式的开发人员控制的边界内该边界将范围扩展到JavaServer Faces生命周期的多次调用。 所有长时间运行的对话都限于特定的HTTP Servlet会话并且可能不会跨越会话边界。 注意使用ConversationScoped Bean我们可以从ViewScoped JSF Bean中获得所需的功能。 此外借助ConversationScoped Bean我们可以在不同的页面请求之间维护相同的对话或状态。 但是当我们不进行对话时托管Bean将保持活动状态直到超时。 需要注意的是使用会话或会话范围的bean必须可序列化。 这是因为容器会不时地钝化HTTP会话因此当再次激活该会话时必须检索Bean的状态。 5. Singleton – Singleton伪作用域 这是一个伪作用域。 它定义了一次实例化bean。 当将CDI托管bean注入另一个bean中时CDI容器将使用代理。 代理是处理对bean的调用的代理。 但是 Singleton注释的bean没有代理对象。 客户端直接引用单例实例。 那么当客户端被序列化时会发生什么 我们必须确保单例bean保持单例。 为此有几种方法例如让单例bean实现writeResolve()和readReplace() 由Java序列化规范定义确保客户端仅保留对单例bean的临时引用或者给出客户端对InstanceX类型的引用其中X是单例bean的bean类型。 6. Dependent – Dependent伪作用域 该伪作用域意味着存在一个对象该对象恰好服务于一个客户端bean并且具有与该客户端bean相同的生命周期。 这是未显式声明作用域类型的bean的默认作用域。 从属bean的实例永远不会在不同客户端或不同注入点之间共享。 严格来说它是某些其他对象的从属对象。 当创建它所属的对象时将实例化该对象并在删除它所属的对象时将其销毁。 除Dependent外所有预定义范围都是上下文范围。 CDI将上下文范围的bean放入其生命周期由Java EE规范定义的上下文中。 例如会话上下文及其bean在HTTP会话的生存期内存在。 对bean的注入引用是上下文相关的。 引用始终应用于与进行引用的线程的上下文相关联的Bean。 CDI容器确保根据为这些对象指定的范围所确定的正确时间创建和注入对象。 您还可以定义和实现自定义范围。 实施和扩展CDI规范的人员可以使用它们。 这是CDI提供的所有bean范围的教程。 参考文献 Seam框架参考文档 Java EE 6教程 翻译自: https://www.javacodegeeks.com/2013/04/java-ee-cdi-bean-scopes.html