在 Play 1.x 应用程序中,我想创建一个名为 AppContext 的类,它将充当应用程序中服务之间的粘合层。它可以作为一个简单的依赖注入器,但我也希望它控制事件的工作流,从不同的层捕获事件,这样服务就不必自己做这些了。
我发现将 AppContext 实现为插件将是最好的选择,因为它能够在应用程序加载时做一些事情,还可以监听一些事件,异步执行一些操作等。
这是正确的方法吗?
在 Play 1.x 应用程序中,我想创建一个名为 AppContext 的类,它将充当应用程序中服务之间的粘合层。它可以作为一个简单的依赖注入器,但我也希望它控制事件的工作流,从不同的层捕获事件,这样服务就不必自己做这些了。
我发现将 AppContext 实现为插件将是最好的选择,因为它能够在应用程序加载时做一些事情,还可以监听一些事件,异步执行一些操作等。
这是正确的方法吗?
您可以简单地将此类 AppContext 实现为特定缓存条目的包装器,并使用分布式缓存处理程序(已可配置,如 memcache、ehcache、HazelCast ......)。
public class AppContext {
public String getConfig(String name) {
return Cache.get("appcontext.config."+name, String.class);
}
public void setConfig(String name, String value) {
Cache.set("appcontext.config."+name, value);
}
...
}
已经有几个插件并且简单地配置了一些这种“分布式缓存管理器”,如 memcache、eh-cache、Hazelcast。
或者,您可以直接使用 Hazelcast(或其他)来保存和同步内存中的上下文和/或以分布式方式处理队列、数据存储等。