Weld Reference 笔记之第二章


二章:More about Beans

一个BEAN通常是包含业务逻辑的应用程序类,它可通过JAVA代码来调用,也能通过EL来访问。BEAN可以访问事务性资源,其生命周期由容器来管理,大多数的BEAN通常是statefulcontextual的。

    (以下两段不是直译,是由我的理解总结而来)

什么是stateful(可持续状态的)stateful和客户端能引用到什么样的BEAN实例对象有关,stateless(singleton单例?这个有疑问)情况下,不同客户端引用的是不同的BEAN实例,而stateful情况下,不同客户端能共享BEAN实例。

什么是contextual,如上所述stateless(singleton单例)不能够管理BEAN实例生命周期,而stateful能够管理生命周期,不过这种管理是由容器直接管理,而要想由程序控制的,更加细化的生命周期管理则要引入contextual(上下文的)概念,contextual管理由BEAN Scope来实现。RequestScopedBEAN实例上下文生命周期只属于一个线程或客户端, SessionScopedBEAN实例上下文生命周期可被多个线程或客户端共享, ApplicationScopedBEAN实例上下文生命周期可被所有线程或客户端共享。

2.1Bean的构造

一个BEAN包括:

一组Bean Types集合

一组Qualifiers限定器

一个Scope

(可选的)一个Bean EL name

一组interceptor bindings拦截绑定

一个BEAN实现

可能还有一个Alternative选择器

2.1.1 Bean types,qualifiers and dependency injection(详情见第四章)

A bean type是用户可见的类名或接口名。

如下例有四个TYPE,可见的三个,另加上Object

而下面的只有三个,两个接口名,另加上Object,其类名用户不可见

Bean Types 可由@Typed来限定,如下例

若一个接口有多个实现,可由@Qualifiers来限定

限定器定义如下

限定器实现如下

限定器使用如下

2.1.2 Scope(详情第五章)

2.1.3 EL name

JAVA代码调用不可用的情况下,如JSPJSF中,可用EL方式来调用BEAN

BEAN 名称可由@Named来定义

2.1.4Alternatives选择器

限定器用于编译时选择,而选择器用于部署时选择,如测试环境下。。。

2.1.5Interceptor binding types 拦截绑定类型

使用@interceptor

定义拦截器

实现拦截器

使用拦截器

2.2什么类型的类是BEAN

以上我们提到过两种类型的BEANSJavaBeans and EJB session beans.

2.2.1Managed Beans

CDI之前是通过@ManagedBeant来定义托管BEAN的。而在CDI中,不需要再用这种方式了,CDI容器认为符合以下条件的都是托管BEAN

The unrestricted set of bean types for a managed bean contains the bean class, every superclass and all interfaces it implements directly or indirectly.

If a managed bean has a public field, it must have the default scope @Dependent.

Managed beans support the @PostConstruct and @PreDestroy lifecycle callbacks.

Session beans are also, technically, managed beans. However, since they have their own special lifecycle and take advantage of additional enterprise services, the CDI specification considers them to be a different kind of bean.

(CDI中托管BEAN还有什么特别之处么?我现在仍然不太理解,暂时的理解就是非WEB BEAN,因此不敢翻译,只把原文贴出来了,如果有清楚其中关系的,请给我留言,谢谢

2.2.2 Session Beans

 Session Beans属于EJB规范,相对于托管BEAN,它有特殊的生命周期,状态管理和并发模型,虽然这些特性托管BEAN也有,但是不同。但在CDI框架内,托管BEANSESSION可以互注,SESSION也可以互注,

2.2.3 Producer methods

@Producer 

定义

使用

2.2.4 Producer fields


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值