发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA

jdon框架的aop和缓存问题

2008-04-22 14:05
赞助商链接

banq老师,希望你原谅我又来提缓存问题,你在这方面已经讲得很多了http://www.jdon.com/jivejdon/forum/messageList.shtml?thread=33420&count=15&start=15,但我真的希望这个框架越来越好用,所以。。。

1、不太理解框架文档关于确定拦截器在整个拦截器链条中的位置的描述,按照26个英文字母的顺序吗?这样做总显得不自然。每次客户段调用如testService.getUser((String)key),拦截器链中的所有拦截器都会被执行吗?后台日志显示似乎有些拦截器没有执行.

2、动态代理,代码Object result = method.invoke(targetObj, p_args)为什么要返回一个result?result具体作用是什么?CacheInterceptor拦截器的代码 model = (ModelIF) invocation.proceed()是怎么确定返回来的对象可以转换为ModelIF?

3、框架的CRUD可以自动清除对象缓存,是否也可以直接清除查询缓存?这样可以省却业务层关于缓存的编码。

4、我们的模型必须继承框架的Model,是否可以完全pojo?比如isCacheable可以放到配置文件中 <model key="userId" class ="com.jdon.framework.test.domain.UserModel" cacheable="false">关于isModified,如果一切由框架进行缓存清除的话就可以不需要了。

5、jdonfrmework是否可以集成JPA?





[该贴被oojdon于2008-04-22 14:29修改过]

2008-04-22 18:29

>拦截器链条中的位置的描述
取决于在aspect.xml等配置文件中的配置先后顺序,框架中配置在先,应用中AOP配置在后。

2.任何处理都有返回,没有返回void就是null罢了,至于如何能确定返回时ModelIF,前面有一些判断,执行到这里就是已经肯定是get方法了。get方法返回结果一般都是ModelIF,如果不是这里出错。

3.手工清除查询缓存是最直接,效率最快的。可能你问题不清楚

4.实现ModelIF接口,如果觉得接口也不好,那么使用元注释就可以,你看我很少谈POJO了,这个概念是坏概念,捣浆糊概念,因为它没有权威严格的定义,这点我已经在以前说得很清楚。
至于isCacheable isModified是否放入配置中,我觉得有几个考虑:1.配置语言化,也就是用XML替代Java语言了,这个已经脱离XML功能,那还不如直接使用脚本语言呢,这已经陷入XML使用极端,Spring就是这样一个XML极端,所以,那么复杂配置Spring 的XML,还不如去使用ROR这样的脚本呢;
2.isCacheable isModified是很小但是分量很重要的方法,因为一旦谁在哪个代码调用一下,就导致本质的区别,很重要的功能就必须写在代码方法中,这样,我们阅读时就能定位到,如果写到配置中,万一谁改一下,我们通过IDE很难定位到,找不到原因。

总之:XML就是进行解耦的地方,就像板块之间的胶水,XML就是胶水,如果赋予其更多重担,就导致系统复杂性增高,难以使用,为什么那么多初学者感觉javaEE配置复杂,因为这些JavaEE产品本身没有能很好定位好这个尺寸。

2008-04-22 21:56

明白了,谢谢

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com