springMVC和spring各自扫描自己的注解不要相互混淆
2016-10-31 17:18
483 查看
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" />
相关文章推荐
- springMVC和spring各自扫描自己的注解不要相互混淆
- 初学SpringMVC+Mybatis之Spring基于注解的组件扫描
- springmvc和spring注解扫描注意事项
- Spring4.0MVC学习资料,注解自己主动扫描bean,自己主动注入bean(二)
- Mybatis结合Spring注解自己主动扫描源代码分析
- Spring和springmvc父子容器注解扫描问题详解
- Spring和springmvc父子容器注解扫描问题详解
- Spring和springmvc父子容器注解扫描问题详解
- 关于Spring大容器和SpringMVC小容器中注解扫描冲突(影响事物回滚)的解决
- 四、初学SpringMVC+Mybatis之Spring基于注解的组件扫描
- 自己实现spring的注解扫描处理功能
- spring中“类扫描的注解”的使用
- SSH或SHSpringMVC下采用spring的Annotation配置dao,service,controller(便于团队开发,各自修改自己的annotation)
- Spring对注解(Annotation)处理源码分析1——扫描和读取Bean定义
- 基于Spring的包含特定注解bean的package扫描工具
- java Spring常用注解,自动扫描装配Bean
- SpringMVC经典系列-04基于Spring3.1注解的方式进行项目开发---【LinusZhu】
- Spring常用注解,自动扫描装配Bean
- 关于Spring注解自动扫描中的 base-package
- 利用Spring Hibernate注解packagesToScan的简化自动扫描方式