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 | |
---|---|---|
简单事件框架 | 简单,轻量,更易表达 |
没有类型安全 基于反射的事件方法调用 |
类型安全事件框架 | 类型安全; 运行时效率更高 | 申明事件响应器以及触发事件的代码较为冗长 |