事件
ActFramework提供简单易用的事件绑定和分派机制
简单事件框架
简单事件让开发人员直接使用字串来定义事件。而事件响应方法则是一个有act.event.On
注解标注的普通Java方法。分派简单事件可以传入任何参数,这些参数都将传入事件响应方法。
申明事件响应方法
public class Foo {
@On(value = "customer-created", async = true)
public void sendWelcomeEmail(Contact newCustomer) {
...
}
}
触发事件
@Controller("/customer")
public class CustomerController {
@PostAction("/")
public void createCustomer(Customer customer, @Context EventBus eventBus) {
customerDao.save(customer);
eventBus.trigger("customer-created", customer);
}
}
类型安全事件框架
类型安全事件框架实现更加传统的事件绑定和分派机制
申明事件响应方法
import act.event.ActEvent;
import act.event.ActEventListenerBase;
import act.util.Async;
@Async
public class CustomerCreated extends ActEventListenerBase<ActEvent<Customer>> {
@Override
public void on(ActEvent<Customer> event) throws Exception {
Customer customer = event.source();
// send welcome email to customer
}
}
触发事件
@Controller("/customer")
public class CustomerController {
@PostAction("/")
public void createCustomer(Customer customer, @Context EventBus eventBus) {
customerDao.save(customer);
eventBus.trigger(new ActEvent<Customer>(customer));
}
}
两种事件框架的比较
Pros | Cons | |
---|---|---|
简单事件框架 | 简单,轻量,更易表达 | 没有类型安全 基于反射的事件方法调用 |
类型安全事件框架 | 类型安全; 运行时效率更高 | 申明事件响应器以及触发事件的代码较为冗长 |
当前内容版权归 actframework.org 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 actframework.org .