springMVC和spring各自扫描自己的注解不要相互混淆
2015-12-19 21:54
513 查看
1、问题
执行 entityManager.flush(); 总是报错:javax.persistence.TransactionRequiredException: no transaction is in progress字面解释是:“没有启动事务”。可是事务是在配置中交给了spring管理了,在方法上加注解 @Transactional就申明了事务的,为何说没有启动事务呢。而且配置中也启动事务注解的扫描了。 <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />。
2、原因
折腾了很久,分析了很久,也看了一些文章,都没说在关键上,后来有一个文章豁然开朗http://blog.csdn.net/lzw190/article/details/18989301。3、解决
让springMVC的配置xml和spring容器的配置xml分开,在各自的xml中配置自己该做的事情,不要让springMVC去扫描不该自己管理的注解。3.1 springMVC部分
3.1.1 web.xml 中 springMVC相关部分
<servlet><servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3.1.2 mvc.xml 文件中关键部分
<!-- 开启springMVC注解支持 --><mvc:annotation-driven />
<mvc:default-servlet-handler/>
<!-- 扫描Controller -->
<context:component-scan base-package="org.cj.controller">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
</context:component-scan>
3.2 spring容器部分
spring容器需要扫描的注解,放在别的xml中,让spring 的Listener去解读3.2.1 web.xml 中spring容器关键部分
<context-param><param-name>contextConfigLocation</param-name>
<param-value>
<!--说明: 需要让spring 容器解读的配置,放在spring-开头的xml文件中 -->
/WEB-INF/spring-*.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
3.2.2 spring-core.xml文件关键部分
<!-- 自动加载构建bean --><context:component-scan base-package="org.cj" />
<!--开启spring的事务申明注解支持-->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
相关文章推荐
- java中的构造器与普通函数的区别
- Java多线程:Semaphore
- 全面解析Java注解
- JavaEE_Mybatis_SpringMVC_SpringMVC 之 表单标签
- JAVA的包装类2 【转】
- JAVA的包装类 【转】
- Java读取证书、公钥、私钥
- Java中九大内置对象
- Java基础:死锁示例
- Struts 2 基本语法
- JAVA 清理垃圾文件简单实现
- Jdk1.7环境变量的配置
- java中的异常
- java(九)双重for循环
- java 注解
- 实战WEB 服务器(JAVA编写WEB服务器)
- java实现简单web服务器(分析+源代码)
- Java中常见的5种WEB服务器介绍
- Struts2基于注解的Action配置
- 一个例子让你了解Java反射机制