Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
我是出现这个问题,我使用Transaction的注解是这么写的,
<!--配置事务-->
<!--配置事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!--开启事务注解-->
<tx:annotation-driven ></tx:annotation-driven>
其中开启注解我没有指向管理器,一定要写transaction-manager属性,改成:
<!--开启事务注解-->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"></tx:annotation-driven>
就解决了。
配置事务的过程,我百度了一下,在这里记录一下:
spring容器优先加载由ServletContextListener(对应applicationContext.xml)产生的父容器,而SpringMVC(对应mvc_dispatcher_servlet.xml)产生的是子容器。子容器Controller进行扫描装配时装配的@Service注解的实例是没有经过事务加强处理,即没有事务处理能力的Service,而父容器进行初始化的Service是保证事务的增强处理能力的。如果不在子容器中将Service exclude掉,此时得到的将是原样的无事务处理能力的Service。
上