如果你采用第一种代理的方法,也是可以实现的。
在传入参数的时候,多传入一个Object参数。 然后在调用保存方法的时候判断对象instance of User 或者 Art 然后去调用不同的保存方法。如果你采用第二种方法也可以,这就也需要你提出关键代码,然后判断调用了
在传入参数的时候,多传入一个Object参数。 然后在调用保存方法的时候判断对象instance of User 或者 Art 然后去调用不同的保存方法。如果你采用第二种方法也可以,这就也需要你提出关键代码,然后判断调用了
解决方案 »
- 请教关于Hibernate中的clear()和flush()
- 在线等,雪地跪求
- Hibernate 日期查询
- 请问如何大批的将java文件转成utf-8编码啊,谢谢
- 类型转换的问题啊!!!
- org.w3c.dom.Element的getElementsByTagNameNS()方法对应的DOM2可替代的方法是什么?
- 谁知道哪有maven1.0 for eclipse 的插件?
- 在weblogic配置数据库的问题
- servlet 和 EJB 高手请进
- org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSessi0
- 关于Spring的问题
- 初学hibernate遇到的关于HibernateUtil的问题
public class CA {
public void a() {
b();
}
public void b() {
// do something.
}
}例如AOP对方法a()做切面,可以打印出a的日志,但是这时AOP对b()不起作用。
1、aop只适合于大同的情况下,就是所有的类的方法,记录日志格式一致时,用aop日志方式是个很不错的选择,反之,如果每个方法都有自己需要定制地方,比如记录不同的关键值,这个时候aop就似乎不太合适了,哪怕是用annotation,在目标方法上标明要获取的值来消除这种不同,这样也只能解决一部分问题,只能消除一部分不同的地方。
2、在方法中,直接用log语句,这种方式最简单,最灵活,也最繁琐。
3、研究log4j时,发现MDC和NDC这两个好东西,基与ThreadLocal的,和spring管理事务的原理一样。灵机一动,不如这样,spring aop负责记录大同的部分,在目标方法中,记录关键信息部分,无论是目标方法还是spring aop,它们都将数据放到MDC中,一个用户操作对应一个线程,在线程结束时,日志记录就放到了ThreadLocal对应的map中。
第3个方法显然也是个折中的方法,集中了1和2的优点,但同时难免日志操作干扰业务逻辑的缺点。表达能力有限,请各位大侠批评指导。