spring-mybatis事物疑难杂症
今天调试多个dao层的service接口时,发现事物失效了,在数据库中产生了一条数据,但已经抛出了
RuntimeException.看到这个马上检查spring配置文件中事物配置,调试了半天,依旧存在这个问题,
写了这么久的项目,不应该出错的.然后就是各种百度,Google,好半天没有成果,最后终于发现是扫包问题.
在spring-mvc配置文件中扫包中包含了service层,spring如果要使事务生效,就需要cglib为对应service类生成代理子类,在spring.xml中已经生成了代理类,而在spring-mvc.xml中,又重新扫描了一遍,使得原先cglib生成的代理子类失效,从而事务拦截也失效。
spring-mvc.xml配置文件中扫包只扫controller层的
spring.xml配置文件中剔除controller层的扫包,也就是加上这句1
2
3<context:component-scan base-package="com.anber">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:exclude-filter>
</context:component-scan>
搞懂Websocket原理
最近项目中用到websocket,在网上查了很多资料,整理一些,转到我的博客上,分享一下。
websocket与http
- WebSocket是HTML5出的东西(协议),也就是说HTTTP协议没有变化,或者说没有关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)
- 首先HTTP有
1.1
和1.0
之说,也就是所谓的keep-alive
,把多个HTTP请求合并为一个,但是Websocket
其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说它是HTTP协议上的一种补充。 - 另外HTML5是指一系列新的API,或者说新规范,新技术。HTTP协议本身只有
1.0
和1.1
,而且跟HTML本身没有直接关系。。通俗来说,你可以用HTTP协议传输非HTML数据。再简单来说,层级不一样。