我有一个Spring HandlerInterceptor拦截我的应用程序中的前端URL(/ app/*).我想确定要在HandlerInterceptor中调用Handler中的哪个动作方法.有没有办法查看,我是否需要向拦截器注入一些可以根据请求的路径查找的内容?
拦截器是这样的:
public class PageCacheInterceptor implements HandlerInterceptor {...}
Run Code Online (Sandbox Code Playgroud)
它映射如下:
<mvc:interceptors>
<bean class="com.example.web.interceptors.PageCacheInterceptor" />
</mvc:interceptors>
Run Code Online (Sandbox Code Playgroud)
背景(因为我知道你会问!).我正在为我的应用添加简单的页面缓存,并希望在控制器中的每个合适的方法上使用@Cacheable之类的注释.然后,拦截器可以根据创建响应的操作确定是否缓存响应.
例如:
@RequestMapping(value = "", method = RequestMethod.GET)
@Cacheable(events={Events.NEW_ORDER,Events.NEW_STAT})
public String home(Model model) {...}
Run Code Online (Sandbox Code Playgroud)
事件是导致缓存失效的事件.例如,/ widget/list动作会使其缓存的响应被保存的新窗口小部件无效.
编辑:我已经升级到最新的Spring 3.1 M2,因为这篇博文暗示了我需要的功能,但是不清楚是否需要注入这些新类或对它们进行子类化.有没有人用它们来拦截拦截器中的HandlerMethod?
我正在调整我们在App Engine上运行的应用程序,其中一个最大的成本是数据存储读写.我注意到写作中最大的罪犯之一就是我们坚持订单.
基本数据是Order有很多项 - 我们分别存储和关联它们如下:
@PersistenceCapable
public class Order implements Serializable {
@Persistent(mappedBy="order")
@Element(dependent = "true")
private List<Item> orderItems;
// other fields too obviously
}
@PersistenceCapable
public class Item implements Serializable {
@Persistent(dependent = "true")
@JsonIgnore
private Order order;
// more fields...
}
Run Code Online (Sandbox Code Playgroud)
appstats显示了一个带有单个项目的订单的两个数据存储库 - 但两者都使用了大量的写入.我想知道从有经验的人那里优化这个的最好方法.
AppStats数据:
real = 34ms api = 1695ms cost = 6400 billed_ops = [DATASTORE_WRITE:64]
real = 42ms api = 995ms cost = 3600 billed_ops = [DATASTORE_WRITE:36]

我所知道的一些领域可能会有所帮助:
所以,我的问题是,上述任何项目是否预示着大赢,或者是否有其他我错过的选项最好能够关注最初? …
我正在回顾Google App Engine 上从 Java 8 到 Java 11 的迁移路径,过去 GAE 环境提供了出色的单元测试支持和本地开发环境。
但在新的 Java 11 运行时中,这些似乎都缺失了,它们只是还没有准备好,还是没有出现在这个新的运行时中?
测试页面说:
要在部署之前测试应用程序的功能,请使用您常用的开发工具在本地环境中运行应用程序。
这似乎将问题转回给用户 - 但在部署到 GAE 时,具有用于开发和单元测试的本地运行时仿真非常重要。如果它永远不会出现在 Java 11 中,那么实际开发和测试 Java 11 运行时 GAE 应用程序的最佳/正确方法是什么?