RequestScoped <ConversationScoped < SessionScoped
http://stackoverflow.com/questions/7788430/how-does-jsf-2-conversationscope-work
http://docs.oracle.com/javaee/6/api/javax/enterprise/context/ConversationScoped.html
What is CDI?
http://refcardz.dzone.com/refcardz/contexts-and-depencency?oid=hom16925
http://sfwk.org/Documentation/WhatIsThePurposeOfTheModelAnnotation
http://docs.oracle.com/javaee/6/tutorial/doc/gkhic.html
public void creditPayment(@Observes @Credit PaymentEvent event) {
...
}
public void debitPayment(@Observes @Debit PaymentEvent event) {
...
}
Observer methods can also be conditional or transactional:
-
A conditional observer method is notified of an event only if an instance of the bean that defines the observer method already exists in the current context. To declare a conditional observer method, specifynotifyObserver=IF_EXISTS as an argument to @Observes:
@Observes(notifyObserver=IF_EXISTS)
To obtain the default unconditional behavior, you can specify @Observes(notifyObserver=ALWAYS).
-
A transactional observer method is notified of an event during the before completion or after completion phase of the transaction in which the event was fired. You can also specify that the notification is to occur only after the transaction has completed successfully or unsuccessfully. To specify a transactional observer method, use any of the following arguments to @Observes:
@Observes(during=BEFORE_COMPLETION)
@Observes(during=AFTER_COMPLETION)
@Observes(during=AFTER_SUCCESS)
@Observes(during=AFTER_FAILURE)
To obtain the default non-transactional behavior, specify @Observes(during=IN_PROGRESS).
An observer method that is called before completion of a transaction may call the setRollbackOnlymethod on the transaction instance to force a transaction rollback.
Decorator vs. Interceptor
Decorators are outwardly similar to interceptors. However, they actually perform tasks complementary to those performed by interceptors. Interceptors perform cross-cutting tasks associated with method invocation and with the lifecycles of beans, but cannot perform any business logic. Decorators, on the other hand, do perform business logic by intercepting business methods of beans. This means that instead of being reusable for different kinds of applications as interceptors are, their logic is specific to a particular application.
If an application has both interceptors and decorators, the interceptors are invoked first. This means, in effect, that you cannot intercept a decorator.
decorator http://docs.jboss.org/cdi/spec/1.0/html/decorators.html
分享到:
相关推荐
JSF 2.0之后,可以与Contexts and Dependency Injection(CDI)框架集成,使得Managed Beans可以利用CDI的特性,如依赖注入、事件监听等。 七、JSF实际应用 在实际项目中,JSF常与其他技术结合使用,如PrimeFaces、...
- Conversation Scope是另一种选择,它在多个请求之间保持状态,但需要CDI(Contexts and Dependency Injection)支持,并且实现起来相对复杂。 参考链接: - ...
1. **JSF基本概念**:了解JSF的核心概念,包括 Managed Beans、Facelets、ViewScope、RequestScope、SessionScope 和 ApplicationScope 等,这些都是构建JSF应用的基础。 2. **Facelets模板语言**:Facelets是JSF...
JSF 2.0之后,可以与Java EE的Contexts and Dependency Injection (CDI)框架集成,使Managed Beans的管理和依赖注入更加灵活。 **9. JSF库和扩展** 除了标准组件外,还有许多第三方库如PrimeFaces、RichFaces、 ...
9. **最佳实践与进阶**:可能涉及A4J、PrimeFaces等组件库的使用,以及JSF与CDI、Spring等其他框架的集成。 通过这个教程,开发者可以系统性地了解并掌握在MyEclipse中利用JSF进行Web开发的基本技能,为进一步深入...
Seam 是一个强大的Java EE框架,它主要用于简化JavaServer Faces (JSF)应用程序的开发,同时提供了对EJB 3、CDI(Contexts and Dependency Injection)、Ajax等技术的集成。在JSF项目中配置Seam,可以充分利用其优势...
开发者可以使用注解如 `@Inject` 来注入依赖,`@Named` 来创建可注入的 bean,以及 `@Scope` 来定义 bean 的作用域。 2. **JSF**:JSF 是一个成熟的 Web UI 框架,它通过组件化的方式简化了 UI 开发。开发者可以...
JSF标签库。 JSF完全缺少一些必要的基本功能,不包含图形丰富的组件。 标签:Include Cache:缓存包含的JSF内容以提高性能懒加载:...类似于CDI Conversation Scope但基于ManagedBean的简短文档可通过项目文件获得。
6. **Managed Beans**:深入理解Managed Bean的作用,它们的scope(如Request、Session、Application和ViewScope),以及如何使用CDI(Contexts and Dependency Injection)与JSF集成。 7. **Ajax与异步处理**:...
1. **使用CDI(Contexts and Dependency Injection)**:Spring Boot支持CDI,可以更好地集成JSF的依赖注入。 2. **选择适当的JSF实现**:Mojarra是官方实现,MyFaces则有更小的内存占用,根据需求选择。 3. **考虑...
7. **CDI集成**:JSF 2.0与Contexts and Dependency Injection (CDI)进行了深度集成,提供了依赖注入和企业管理服务,如事件、拦截器和上下文感知bean。 8. **生命周期的简化**:JSF 2.0简化了组件生命周期,主要有...
`cdi-api.jar`是CDI规范的API接口定义,包含了所有CDI相关的接口和注解,比如`@Inject`、`@Named`、`@Scope`、`@Qualifier`等。开发人员在编写JavaBean或其他需要使用CDI功能的类时,会引入这个库来使用这些接口和...
CDI可以与EJB、JPA、JSF等JavaEE技术无缝集成,提供统一的依赖注入机制,使得整个应用程序更加协调一致。 总之,《WebBeans 入门手册》是学习和掌握CDI规范的重要资源,它将帮助开发者充分利用JavaEE6及更高版本的...
10. **CDI(Contexts and Dependency Injection)**: CDI是Java EE中的依赖注入框架,通过注解驱动的方式简化了组件的管理和装配,如@Inject、@Named和@Scope等。 以上只是Java EE API中的一部分核心知识点,实际的...
8. **CDI(Contexts and Dependency Injection)**:CDI是Java EE中的依赖注入框架,简化了对象之间的依赖关系管理。文档会介绍Bean、Qualifier、Injection Point和Scope的概念。 9. **JPA(Java Persistence API)...
GuicedEE-BOM项目的核心目标是简化 Jakarta EE 应用的构建过程,通过提供一个中心化的版本管理方案,确保项目中的各个组件(如JPA、JSF、CDI等)使用兼容的版本。这样可以避免版本冲突,减少手动调整版本的工作量,...
7. **依赖注入 (DI)**:Java EE 6引入了CDI(Contexts and Dependency Injection),它是Spring DI的一种替代方案,允许组件之间进行松耦合的依赖管理。通过注解如`@Inject`, `@Named`, `@Scope`等,开发者可以轻松...
##### 6.2 CDI的使用 - **@Qualifier**:扩展了注入的灵活性。 - **@Scope**:提供了更多的作用域选择。 - **@Produces**与**@Dispose**:允许自定义Bean的生命周期。 - **@Alternative**与**@Specialize**:用于...