小编Ash*_*der的帖子

如何从Spring HandlerInterceptor中查找Handler上调用的方法?

我有一个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?

java spring spring-mvc

7
推荐指数
1
解决办法
3737
查看次数

如何优化AppEngine Java/JDO数据存储区put()以减少写入次数

我正在调整我们在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]

appstats请求信息

我所知道的一些领域可能会有所帮助:

  1. 更少的索引 - 在许多订单和项目属性上有隐含的索引,我可以告诉它不要索引,例如item.quantity不是我需要查询的东西.但这就是所有这些写作的内容吗?
  2. 取消关联项目和订单,以便我只有一个实体OrderItem,根本不需要关系(但需要额外的存储空间).
  3. 在明确指数方面,我在订单表上只有1,按订单日期,在订单项上只有一个,按SKU /日期和关系的隐含一个.
  4. 如果这些项目是一个集合而不是一个列表,是否会完全取消对子项_IDX的索引?

所以,我的问题是,上述任何项目是否预示着大赢,或者是否有其他我错过的选项最好能够关注最初? …

java google-app-engine jdo

5
推荐指数
1
解决办法
573
查看次数

从 App Engine Java 8 迁移到 Java 11 后,哪些本地开发和单元测试工具运行良好?

我正在回顾Google App Engine 上从 Java 8 到 Java 11 的迁移路径,过去 GAE 环境提供了出色的单元测试支持本地开发环境

但在新的 Java 11 运行时中,这些似乎都缺失了,它们只是还没有准备好,还是没有出现在这个新的运行时中?

测试页面说:

要在部署之前测试应用程序的功能,请使用您常用的开发工具在本地环境中运行应用程序。

这似乎将问题转回给用户 - 但在部署到 GAE 时,具有用于开发和单元测试的本地运行时仿真非常重要。如果它永远不会出现在 Java 11 中,那么实际开发和测试 Java 11 运行时 GAE 应用程序的最佳/正确方法是什么?

java google-app-engine

5
推荐指数
1
解决办法
939
查看次数

标签 统计

java ×3

google-app-engine ×2

jdo ×1

spring ×1

spring-mvc ×1