【Java EE】--Contexts and Dependency Injection (上下文与依赖注入)04
来源:互联网 发布:linux线程挂起与唤醒 编辑:程序博客网 时间:2024/06/07 19:09
使用范围
对于Web应用程序来使用注入另一个bean类的bean,bean需要能够在用户与应用程序交互的持续时间内保持状态。 定义这个状态的方法是给bean一个范围。 您可以给对象表23-1中描述的任何范围,具体取决于您如何使用它。
表23-1 范围
前三个范围由JSR 346和JavaServer Faces规范定义。最后两个由JSR 346定义。
除@Dependent之外的所有预定义范围都是上下文范围。 CDI将上下文范围的bean放置在其生命周期由Java EE规范定义的上下文中。例如,会话上下文及其bean在HTTP会话的生存期内存在。注入bean的引用是上下文感知的。引用始终适用于与正在引用的线程的上下文相关联的bean。 CDI容器确保在由为这些对象指定的范围确定的正确时间创建和注入对象。
您还可以定义和实现自定义作用域,但这是一个高级主题。自定义范围可能被那些实现和扩展CDI规范的用户使用。
范围为对象提供了明确定义的生命周期环境。范围对象可以在需要时自动创建,并在其创建的上下文结束时自动销毁。此外,其状态由在相同上下文中执行的任何客户端自动共享。
Java EE组件(如servlet和企业bean)以及JavaBeans组件不具有明确定义的范围。这些组件是以下之一:
单例,如Enterprise JavaBeans单例Bean,其状态在所有客户端之间共享
无状态对象,如servlet和无状态会话bean,不包含客户机可见状态
必须由其客户端明确创建和销毁的对象,例如JavaBeans组件和有状态会话bean,其状态由客户端之间的显式引用传递共享
但是,如果您创建一个受管Bean的Java EE组件,则它将成为一个作用域对象,该对象存在于一个定义明确的生命周期环境中。
Printer bean的Web应用程序将使用一个简单的请求和响应机制,因此可以如下注释受管Bean:
import javax.enterprise.context.RequestScoped;import javax.inject.Inject;@RequestScopedpublic class Printer { @Inject @Informal Greeting greeting; ...}
使用会话,应用程序或会话范围的Bean必须是可序列化的,但是使用请求范围的bean不必是可序列化的。
- 【Java EE】--Contexts and Dependency Injection (上下文与依赖注入)04
- 【Java EE】--Contexts and Dependency Injection (上下文与依赖注入)05
- 【Java EE】--Contexts and Dependency Injection (上下文和依赖注入)01
- 【Java EE】--Contexts and Dependency Injection(上下文和依赖注入) 02
- 【Java EE】--Contexts and Dependency Injection(上下文和依赖注入) 03
- Contexts and Dependency Injection for the Java EE Platform(CDI,JSR-299)
- 依赖注入(Dependency Injection)
- CDT(Contexts And Dependency Injection)
- Dependency Injection 依赖注入
- Dependency Injection 依赖注入
- Dependency Injection 依赖注入
- 依赖注入(Dependency Injection)模式
- 依赖注入(Dependency Injection)模式
- AngularJS_4 Dependency Injection(依赖注入)
- spring依赖注入(dependency injection)
- EJB---->依赖注入(dependency injection)
- 依赖注入 理解Dependency Injection
- Spring依赖注入(dependency injection)
- 控件在代码设置宽度和高度。
- sql:常用sql查询工具五(explain 执行计划)
- 解决ScrollView中嵌套ListView或GridView导致的ScrollView自动滚动到ListView或GridView位置的问题
- 详谈jQuery中使用attr(), prop(), val()获取value的异同
- Hbuilder egit插件的安装使用--项目文件丢失的教训
- 【Java EE】--Contexts and Dependency Injection (上下文与依赖注入)04
- (个人总结)C++中int类型与String类型的相互转换
- Android开发之RecyclerView的交互动画(实现拖拽和删除)
- dfgsdfg
- APP加载错误导致FM打开失败
- 程序猿:003每个java程序猿撸代码过程中必写的基础知识
- oracle rman 备份恢复数据库和表空间
- Azkaban 3.0 分布式安装部署文档
- ReactiveCocoa 和 MVVM 入门