这几天学习了下tomcat启动时查询数据库和java的多线程操作,实现的时候发现报错
严重: StandardWrapper.Throwable
org.hibernate.HibernateException: No Session found for current thread
daoImpl里面用的是getcurrentsession
之前一直以为是hibernate对session的控制什么的,狂查资料没解决
后来重新建了个项目,导入最新包,搞了好久才发现是spring的配置文件中aop的切点(pointcut)属性设置问题
由于之前测试的时候是在以前的项目,那个项目的切点设置了两个地方:
<aop:config proxy-target-class="true">
<aop:advisor
pointcut="execution(* com.aaa.security.dao.impl.*.*(..)) OR execution(* com.aaa.dao.impl.*.*(..))"
advice-ref="txAdvice" />
</aop:config>
我新建的项目里面的设置是
<aop:config proxy-target-class="true">
<aop:advisor
pointcut="execution(* com.aaa.dao.impl.*.*(..))"
advice-ref="txAdvice" />
</aop:config>
后来发现把切点调换个位置就可以成功在tomcat启动时查询数据库和java的多线程操作下查询数据库的
即改为:
<aop:config proxy-target-class="true">
<aop:advisor
pointcut=" execution(* com.aaa.dao.impl.*.*(..)) OR execution(* com.aaa.security.dao.impl.*.*(..))"
advice-ref="txAdvice" />
</aop:config>
本人技术有限,再往下就不知道是什么原因了