使用AOP来说,太方便了,并且特别适合这类场景. 代码如下,这里是将要统计的信息写到log文件中,也可以设计成写入表中. package com.ecsoft.interceptor; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.re…
问题描述: service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据, 把这条执行的sql语句复制下来在数据库中直接操作是可以执行更新到的!! 分析问题: 既然sql语句的执行已经在控制台打印出来了,说明肯定是执行到了sql,那最后数据库中没有更新成最新的数据,可能有以下几个解决方法 解决方法: 1.service层的方法上并未添加@Transactional注解…
在java的spring框架中,用Timer和TimerTask来实现定时任务,有时我们要在TimerTask的子类的重写run方法里,调用service层的方法. 但是不管是spring.xml配置的bean还是注解@autoware注入的bean,在执行的时候都会报空指针异常. 刚开始的代码: 代码一:TimerTask的子类 public class AbcTask extends TimerTask { private AaaDAO aaaDAO; public void setAaaD…
有一个需求,就是中断某个方法中的for循环 目前的做法是:for循环中,增加if判断,如果满足条件就return,会中断这个方法 for (int i = 0; i < totalIndex; i++) { ...... // 发送之前,判断一下任务状态,如果是暂停或者停止,直接return? FileInfo newFileInfo = fileInfoRepository.findById(fileInfo.getFileId()).get(); Integer fileState = ne…
异常情况如下: 从异常看,主要是因为TbItem没有序列化: 分析问题: 表现层调用服务端时返回了一个TbItem对象即Java对象,此时这个对象远程调用拿过来必须进行序列化,要进行网络传输必须先要把对象序列化,再通过流传到引用端(表现层),传到表现层后再进行反序列化,再变成Java对象,所以TbItem对象必须实现序列化接口…
代理模式 对代理模式的理解,通过http://www.runoob.com/design-pattern/proxy-pattern.html 对AOP的代理模式,参考https://www.cnblogs.com/xujiming/p/5737531.html 目标:测试service层每一个方法的执行时间: 代理模式的本质:将被代理对象注入给代理对象,当调用代理对象时,实际上,是在调用被注入的被代理对象 理解: 代理对象 被代理对象 代理类 被代理对象 商家 厂商 房屋中介 房东 静态代理:…
场景: 现在有这么一个情况,就是在service中提供的一个方法是先将符合条件的数据全部删除,然后再将新的条件全部插入数据库中 这个场景需要保证service中执行两步 1.删除 2.插入 这两步自然是在同一个事务中完成才是一个完整的操作. 那么针对这个场景,看看注解怎么用 1>>先看dao层 链接:http://www.cnblogs.com/sxdcgaq8080/p/8984140.html dao层也就是repository层的delete操作,也就是在jpa中使用delete操作,需…
service 层 服务层:直接为客户端提供的服务或功能.也是系统所能对外提供的功能. domain层 领域层:系统内的领域活动,存放实体. dao 层 持久层,DB操作都写在这里,数据访问对象,通过领域实体对象来操作数据库. biz层 业务层,我只做某方面的业务处理,如果需要数据库工作,联系下数据部门(dao)协助我,业务层不会出现数据操作 代码 action层 控制层,MVC中充当C角色,用来分配哪个业务来处理用户请求. common层 通用工具包,一般一个公司会有固定的jar,好几个项目通…
2.Service层 如前所述,Service层是Control层与Model层之间桥接的一层,它拥有所有要在屏幕上显示的实体(除了背景)的引用 我们知道,当游戏运行时,随时都可能发生碰撞,随时都可能发生飞行物的消失.而我们要想判定飞行物的状态,就必须把所有的飞行物都遍历一遍方可,那么我们要把所有的没消失的飞行物都放在一起.但是如果这些飞行物放在一起都放在control层里,control层会显得很庞大,又要处理飞机的销毁,又要给返回图片.然后如果我们想通过服务器根据条件获得新的飞机,我们是不是…
之所以要写这个,是因为最近碰到了一个延迟加载的 load() 导致出现 noSession 的异常. 下面第三种方式解决这个问题需要用到一个本地线程的对象,也就是 ThreadLocal 类,之前写过关于这个对象,可以看这个博客[本地线程 ThreadLocal 类] 提一嘴 get 和 load 的区别:[详细可以查看这篇博客 load() 和 get() 的区别] 1.get() 采用立即加载方式,而 load() 采用延迟加载;2.get() 方法执行的时候,会立即向数据库发出查询语句,而…